Advertiser Integration
Before You Start
Before beginning advertiser integration, ensure you are familiar with the Data Source Management console. This tool allows you to trace ingestion activity, monitor advertiser syncs, and debug potential issues using the assigned Data Source UUID. By checking logs and status flags here, you can confirm that advertiser records are processed correctly before proceeding to campaign setup and ad serving. Using this visibility early helps reduce integration errors and ensures smoother QA and go-live phases.
ℹ️ For more details, see Data Source Management
Link to Products
Remember that products reference advertisers via advertiser_id. Thus, the advertiser’s id field value is what must match the advertiser_id in product records. Keep these consistent. For example, if you have an advertiser with id = 67890 (as in the examples above), then products for that advertiser should use
Advertiser Ingestion API
GoWit provides an endpoint to create or update advertiser records via API. The endpoint is:
POST /integration/advertisers
This expects a JSON payload with your marketplace_id
and an array of advertisers. Each advertiser object would at least include the advertiser’s id (unique advertiser identifier in your system), name (advertiser name), and status (e.g. ACTIVE
or DELETED
).
See the Advertiser Schema for the full field list.
Sample Advertiser JSON Payload
{
"marketplace_id": 123,
"advertisers": [
{
"id": "vendor_001",
"name": "Brand One",
"status": "ACTIVE"
},
{
"id": "vendor_002",
"name": "Brand Two",
"status": "ACTIVE"
}
]
}
This would create two advertisers (or update them if they already exist). The same headers and auth apply for this endpoint (Authorization token, JSON content type, etc.), and include Data-Source-UUID
.
Updating and Deleting via API
The advertiser API support upserts for create/update and provide a mechanism for deletions:
Update an Advertiser:
Simply send an object with the same id
and the fields you want to change.
For advertisers, the POST /integration/advertisers
call acts as both create and update – if the advertiser ID already exists, it will update that record with new values (e.g., status change) and the response will count it under updated rather than created.
Deactivate/Delete an advertiser via API:
Send that advertiser with "status": "DELETED"
in a POST request. Marking status as DELETED
will immediately make that advertiser inactive on the platform. (which usually also pauses its campaigns).
Full Catalog Sync via API
If you prefer an approach where each API batch represents a full snapshot (similar to a full feed) and want the system to auto-remove missing items, GoWit’s API provides an optional two-step process using the process_id
.
When you do a POST, the request includes a process_id
. You can then call a special PATCH endpoint to instruct the system to mark any advertiser not included in that process as deleted.
Essentially, you:
- Send the full list of advertisers via
POST /integration/advertisers
with a flag indicating start of full sync (theprocess_id
is included). cURL Example for Advertiser Ingestion API
Below is a sample curl
command to send advertiser data to the GoWit Advertiser Ingestion API:
curl --location '<YOUR_BASE_URL>/integration/advertisers' \
--header 'Authorization: <YOUR_API_KEY>' \
--header 'Data-Source-UUID: <YOUR_DATA-SOURCE-UUID>' \
--header 'Content-Type: application/json' \
--data '{
"marketplace_id": 19,
"advertisers": [
{
"id": "vendor_001",
"name": "Brand One",
"status": "ACTIVE"
"process_id": 1234
},
{
"id": "vendor_002",
"name": "Brand Two",
"status": "ACTIVE"
"process_id": 1234
}
]
}'
- Call
PATCH /integration/advertisers
with thatprocess_id
andstatus: DELETED
to deactivate any advertisers not in the batch.
curl --location --request PATCH '<YOUR_BASE_URL>/integration/advertisers' \
--header 'Authorization: <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"marketplace_id": 19,
"process_id": 1234,
"status": "DELETED"
}'
It’s important to note that the process_id should be unique for each batch set. For example, if you send us 150 batches with one process_id, and after marking the non-matching items as ‘DELETED’, this process is considered complete. For subsequent batches later, ensure to use a different process_id. This practice keeps your advertiser feeds organized and current in our system.
In most cases, a combination of POST (for upserts) and either individual deletions or occasional full-sync logic can keep the data up-to-date.
If your use-case is incremental (most updates are additions or changes), you might not need the process_id
approach often. It’s there for convenience when doing complete replacements of data via API.
Feed File Structure
Your advertiser feed is typically an XML file containing a list of advertisers. Each advertiser in the feed should include all required fields.
Below is an example of a minimal XML feed with only the mandatory fields, followed by an extended example including optional fields:
XML Feed Example with Required Fields
<!-- Minimal XML feed example with required fields -->
<sellers>
<seller>
<id>1234</id>
<name>Nexora</name>
<status>ACTIVE</status>
</seller>
</sellers>
Full vs Partial Feeds
When onboarding a feed, you will declare whether your feed will be “Full” or “Partial” in terms of content. This affects how deletions are handled
-
Full Feed: Every feed file delivered is a complete snapshot of all active advertisers currently in your catalog. Any previously imported advertisers that is absent in the latest full feed will be assumed removed and GoWit will automatically mark it as deleted (simulating a deletion). In this mode, you typically do not include discontinued advertisers in the file at all; removal is inferred by their absence.
-
Partial Feed (Status-Based): Each feed file always includes all advertisers, and you explicitly set the status field (Active or Deleted) for each. A advertiser is removed only if its status is set to "Deleted" in the feed; missing entries are not auto-removed. This mode requires that the status field be present and kept accurate for every advertiser.
Both approaches are supported – just ensure GoWit knows which strategy you’re using so it can configure ingestion accordingly. (If using partial feed mode, you must consistently include the Deleted entries until they drop from the catalog, otherwise they’d remain active indefinitely.)