Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions _data/taps/schemas/taboola/v2/json/campaign.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
{
"type": "object",
"properties": {
"id": {
"type": [ "null", "integer"]
},
"advertiser_id": {
"type": [ "null", "string"]
},
"name": {
"type": [ "null", "string"]
},
"tracking_code": {
"type": [ "null", "string"]
},
"cpc": {
"type": [ "null", "number"]
},
"daily_cap": {
"type": [ "null", "number"]
},
"spending_limit": {
"type": [ "null", "number"]
},
"spending_limit_model": {
"type": [ "null", "string"]
},
"country_targeting": {
"type": [ "null", "object"],
"properties": {
"type": {
"type": [ "null", "string"]
},
"value": {
"type": "array",
"items": {
"type": [ "null", "string"]
}
}
}
},
"platform_targeting": {
"type": [ "null", "object"],
"properties": {
"type": {
"type": [ "null", "string"]
},
"value": {
"type": "array",
"items": {
"type": [ "null", "string"]
}
}
}
},
"publisher_targeting": {
"type": [ "null", "object"],
"properties": {
"type": {
"type": [ "null", "string"]
},
"value": {
"type": "array",
"items": {
"type": [ "null", "string"]
}
}
}
},
"start_date": {
"type": [ "null", "string"],
"format": "date"
},
"end_date": {
"type": [ "null", "string"],
"format": "date"
},
"approval_state": {
"type": [ "null", "string"]
},
"is_active": {
"type": [ "null", "boolean"]
},
"spent": {
"type": [ "null", "number"]
},
"status": {
"type": [ "null", "string"]
}
}
}
56 changes: 56 additions & 0 deletions _data/taps/schemas/taboola/v2/json/campaign_performance.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"type": "object",
"properties": {
"id": {
"type": ["null", "integer"]
},
"created_at": {
"type": ["null", "string"],
"format": "date-time"
},
"campaign_id": {
"type": [ "null", "integer"]
},
"date": {
"type": [ "null", "string"],
"format": "date"
},
"impressions": {
"type": [ "null", "integer"]
},
"campaign_name": {
"type": [ "null", "string"]
},
"ctr": {
"type": [ "null", "number"]
},
"clicks": {
"type": [ "null", "integer"]
},
"cpc": {
"type": [ "null", "number"]
},
"cpm": {
"type": [ "null", "number"]
},
"cpa_conversion_rate": {
"type": [ "null", "number"]
},
"cpa_actions_num": {
"type": [ "null", "integer"]
},
"cpa": {
"type": [ "null", "number"]
},
"spent": {
"type": [ "null", "number"]
},
"conversions_value": {
"type": [ "null", "number"]
},
"currency": {
"type": [ "null", "string"]
}
},
"additionalProperties": false
}
23 changes: 23 additions & 0 deletions _data/taps/schemas/taboola/v2/taboola-v2-foreign-keys.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
tap: taboola
version: '1'
keys:
campaign_campaign_id:
- table: campaign
keys:
- id
- table: campaign_performance
keys:
- campaign_id
tables:
- table-name: campaign
join:
- table-name: campaign_performance
keys:
- key: id
foreign-key: campaign_id
- table-name: campaign_performance
join:
- table-name: campaign
keys:
- key: campaign_id
foreign-key: id
72 changes: 72 additions & 0 deletions _data/taps/schemas/taboola/v2/taboola-v2-tables.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
tap: taboola
version: '2'
tap-repo-schemas: false
tables:
- name: campaign
description: 'The `{{ table.name }}` table contains info about the campaigns in
your Taboola account.


#### Replication


During every replication job, all campaigns in your Taboola account will be extracted,
or "fully replicated." If you look in the [Extraction Logs]({{ link.replication.extraction-logs
| prepend: site.baseurl }}) in the Stitch app, you''ll see lines like this:


```

2017-10-25 13:46:52,254Z tap - INFO Synced 100 campaigns.

2017-10-25 13:46:52,255Z tap - INFO Done syncing campaigns.

```


Roughly the same amount of campaigns should be extracted during every job, unless
brand new campaigns are added between jobs.


When Stitch loads the extracted records into your destination, however, only new
and updated campaigns will be loaded. **This means that only new and updated campaign
records will count towards your row count**.


#### Deleted campaigns


Currently, [the Singer tap](https://github.com/singer-io/tap-taboola){:target="new"}
powering this integration has no way to account for campaigns that are hard-deleted
in {{ integration.display_name }}. This means that if a campaign is deleted at
the source, the record for that campaign will remain in the destination.


#### NULL dates


On occasion, {{ integration.display_name }}''s API will push `NULL` for `start_date`
and `999-12-31` for `end_date`. [The Singer tap](https://github.com/singer-io/tap-taboola#gotchas){:target="new"}
behind this integration will convert `NULL` dates to `999-12-31` for consistency.

'
links:
singer-schema: https://github.com/singer-io/tap-taboola/blob/master/tap_taboola/schemas/campaigns.json
api-method: https://github.com/taboola/Backstage-API/blob/master/Backstage%20API%20-%20Campaigns.pdf
table-details:
replication-method: Full Table
primary-key: id
- name: campaign_performance
description: 'The `{{ table.name }}` table contains performance data for the campaigns
in your {{ integration.display_name }} account, broken down by day.

'
links:
singer-schema: https://github.com/singer-io/tap-taboola/blob/master/tap_taboola/schemas/campaign_performance.json
api-method: https://github.com/taboola/Backstage-API/blob/master/Backstage%20API%20-%20Campaign%20Performance.pdf
table-details:
replication-method: Key-based Incremental
primary-keys:
- campaign_id
- date
replication-key: date
6 changes: 4 additions & 2 deletions _data/taps/versions/taboola.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@
# TABOOLA VERSIONS #
# -------------------------- #

latest-version: "1"
latest-version: "2"

released-versions:
- number: "2"
date-released: "February 12, 2026"
- number: "1"
date-released: "April 25, 2017"
# date-last-connection:
deprecation-date: "February 12, 2026"
96 changes: 96 additions & 0 deletions _saas-integrations/taboola/v1/taboola.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
---
title: Taboola (v1)
permalink: /integrations/saas/taboola/v1
keywords: taboola, taboola integration, schema, etl taboola, taboola etl, taboola schema
summary: "Connection instructions and schema details for Stitch's Taboola integration."
layout: singer
input: false

key: "taboola-setup"

# -------------------------- #
# Tap Details #
# -------------------------- #

name: "taboola"
display_name: "Taboola"

singer: true
repo-url: https://github.com/singer-io/tap-taboola
status-url: https://twitter.com/taboola?lang=en

this-version: "1"

api: |
[{{ integration.display_name }} Backstage API](https://github.com/taboola/Backstage-API){:target="new"}

# -------------------------- #
# Integration Details #
# -------------------------- #

certified: false

historical: "1 year"
frequency: "30 minutes"
tier: "Standard"

api-type: "platform.taboola"

anchor-scheduling: true
cron-scheduling: true

table-selection: false
column-selection: false
select-all: false
select-all-reason: |
As this integration doesn't support table or column selection, all available tables and columns are automatically replicated.

extraction-logs: true
loading-reports: true

# -------------------------- #
# Feature Summary #
# -------------------------- #

feature-summary: |
Stitch's {{ integration.display_name }} integration replicates data using the {{ integration.api | flatify | strip }}. Refer to the [Schema](#schema) section for a list of objects available for replication.


# -------------------------- #
# Setup Instructions #
# -------------------------- #

requirements-list:
- item: "**Access to the {{ integration.display_name }} API**."
- item: |
**The following API credentials:**

- Taboola Account ID
- Client ID
- Client Secret

requirements-info: "Reach out to your {{ integration.display_name }} Account Manager for assistance. Once you receive this information, you can continue with the setup."

setup-steps:
- title: "Add {{ integration.display_name }} as a Stitch data source"
anchor: "add-stitch-data-source"
content: |
{% include integrations/shared-setup/connection-setup.html %}
4. In the **Username** field, enter your {{ integration.display_name }} username. This user must have access to the {{ integration.display_name }} API.
5. In the **Password** field, enter your {{ integration.display_name }} password.
6. In the **Account ID** field, enter your {{ integration.display_name }} account ID.
7. In the **Client ID** field, enter your {{ integration.display_name }} client ID.
8. In the **Client Secret** field, enter your {{ integration.display_name }} client secret.
- title: "Define the historical replication start date"
anchor: "define-historical-sync"
content: |
{% include integrations/saas/setup/historical-sync.html %}

- title: "Create a replication schedule"
anchor: "define-rep-frequency"
content: |
{% include integrations/shared-setup/replication-frequency.html %}

---
{% assign integration = page %}
{% include misc/data-files.html %}
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
title: Taboola (v1)
title: Taboola (v2)
permalink: /integrations/saas/taboola
keywords: taboola, taboola integration, schema, etl taboola, taboola etl, taboola schema
summary: "Connection instructions and schema details for Stitch's Taboola integration."
layout: singer
#input: false

key: "taboola-setup"

Expand All @@ -18,7 +19,7 @@ singer: true
repo-url: https://github.com/singer-io/tap-taboola
status-url: https://twitter.com/taboola?lang=en

this-version: "1"
this-version: "2"

api: |
[{{ integration.display_name }} Backstage API](https://github.com/taboola/Backstage-API){:target="new"}
Expand Down Expand Up @@ -89,7 +90,10 @@ setup-steps:
anchor: "define-rep-frequency"
content: |
{% include integrations/shared-setup/replication-frequency.html %}

- title: "Set objects to replicate"
anchor: "setting-data-to-replicate"
content: |
{% include integrations/shared-setup/data-selection/object-selection.html %}
---
{% assign integration = page %}
{% include misc/data-files.html %}
Loading