Connecting ad networks

Overview
Which ad types Meta, TikTok and LinkedIn take and how they are created in the ad studio is described there.
Besides Meta, LinkedIn and TikTok, Octibiz runs ads on Google Ads, Microsoft Advertising (Bing), Pinterest and ChatGPT. The same rules apply as for all other ad campaigns:
- The budget cap is mandatory and applies to every path — people, automations, AI.
- Every campaign is created paused at the network. Only someone with
marketing.ads.publish
activates it.
- Numbers come back every day (impressions, clicks, spend, conversions, revenue) and appear in the
report next to Meta & co. The system attaches the attribution parameters (utm_source = network) itself.
All four networks are off by default. Switch them on under Settings → Marketing → Ad networks — that list also shows per network whether an ad account is connected and what is still missing.
| Network | How it connects | Campaign types |
|---|---|---|
| Google Ads | Sign-in button “Connect with Google Ads”, then choose the ad account | Search (responsive search ad), Performance Max, Display, YouTube / Demand Gen, Shopping |
| Microsoft Advertising | Sign-in button “Connect with Microsoft Advertising”, then choose the ad account | Search, Audience, Shopping |
| Pinterest connection under Social media with Connect ad account | Standard, video, carousel and shopping pins | |
| ChatGPT | Advertiser API key from the OpenAI Ads Manager on the integration | Ad in the conversation, product feed |
Core tasks
Switch a network on. Under Settings → Marketing → Ad networks, flip the network’s switch (permission platform.settings.manage). While off, no campaign for that network can be created.
Connect Google Ads. First store the app credentials: Settings → Integrations → New integration → template “Google Ads” with client_id, client_secret (OAuth client of a Google Cloud project, type web application), developer_token and — if you work through a manager account — login_customer_id (MCC, digits without dashes). In the OAuth client, enter https://<your-address>/api/v1/marketing/public/ads/oauth/callback as redirect URI. Then click Connect with Google Ads in the ad networks list, consent at Google (scope adwords) and, back in Octibiz, choose the ad account. Only ad accounts are offered, never manager accounts.
Connect Microsoft Advertising. Template “Microsoft Advertising” with client_id and client_secret of an app registration in Microsoft Entra (scope msads.manage, redirect URI as above), developer_token from the Microsoft Advertising Developer Portal and optionally tenant (default common). Then Connect with Microsoft Advertising and choose the ad account.
Connect Pinterest ads. Pinterest ads use the same Pinterest access as pins. Under Settings → Integrations → Social media, click Connect ad account at Pinterest — this asks for the ads consent (ads:read, ads:write, catalogs:read) — and choose the ad account. Promoted pins need a chosen board.
Connect ChatGPT. In the OpenAI Ads Manager under Settings, create an Advertiser API key and store it as api_key in the template “ChatGPT Ads (OpenAI)”. One key belongs to exactly one ad account — there is no account choice. Optionally set target_countries (e.g. DE, AT) for the campaigns’ countries.
Choose the campaign type. In the brief wizard (Plan an ad), What kind of campaign? appears after choosing the network, with that network’s types. Without a choice, the first type applies. The type is fixed once the campaign exists at the network.
Hand over the product feed. Shopping campaigns show your items. Under Settings → Marketing → Product feed, enter the product URL in the shop as a template (e.g. https://shop.example.com/p/{sku}) and the sales country. Copy the feed URL and store it at the network:
- Google Merchant Center: Products → Feeds → new feed → Scheduled fetch with the URL; link
Merchant Center to Google Ads and store the merchant ID as merchant_id on the Google Ads integration.
- Microsoft Merchant Center: create a store → Feeds → Scheduled download with the URL; store the
store ID as store_id on the Microsoft integration.
- Pinterest: Pinterest Business → Catalogs → Add data source → the URL (format XML).
- ChatGPT: download the CSV, create a product feed in Ads Manager, upload via its SFTP access and
store the feed ID as product_feed_id on the integration.
The feed only contains sellable goods with price, product URL and image. The page counts what is missing (“without price”, “without product URL”, “without image”). Without the items module there is no feed.
Hand-over to Ads Manager (ChatGPT). In the monitoring view of a ChatGPT campaign, Show hand-over package shows headlines, texts, target URLs (with attribution parameters), budget and cap plus instructions — as a list and as CSV to copy. Without an Advertiser API key you create the campaign in Ads Manager with it: budget and pausing then live in the OpenAI Ads Manager, not in Octibiz.
What to set up per network
| Network | At the network | In Octibiz |
|---|---|---|
| Google Ads | Google Cloud project with OAuth client; apply for a developer token in the manager account (MCC) — Basic access is enough for your own accounts, Standard access for many; Merchant Center for shopping | Integration “Google Ads”, switch on, connect, choose ad account |
| Microsoft Advertising | App registration in Microsoft Entra; developer token in the Developer Portal; Microsoft Merchant Center for shopping | Integration “Microsoft Advertising”, switch on, connect, choose ad account |
| Pinterest app with Standard access for the Ads API; ad account in Pinterest Business Hub | Pinterest connection, connect ad account, switch on | |
| ChatGPT | Ad account in the OpenAI Ads Manager (ads.openai.com), Advertiser API key | Integration “ChatGPT Ads (OpenAI)”, switch on |
Fields in detail
Ad campaign
| Field | Required | Values / format | What it does |
|---|---|---|---|
Network platform | yes | google, microsoft, pinterest, chatgpt (besides meta, linkedin, tiktok) | Where the ad runs — only switched-on networks. |
Campaign type campaignType | no | Google search, performance_max, display, demand_gen, shopping · Microsoft search, audience, shopping · Pinterest standard, video, carousel, shopping · ChatGPT chat, shopping | What is created at the network. Empty = the network’s first type. A type of another network is rejected. |
Choosing the ad account
| Field | Required | Values / format | What it does |
|---|---|---|---|
Ad network provider | yes | google_ads, microsoft_ads, openai_ads | Which network is chosen for or disconnected. |
Ad account accountId | yes (choose) | one of the offered IDs | Which ad account spends money. Only accounts offered after sign-in — a freely typed ID is rejected. |
Brand brandId | no | one of your brands | Which brand the ad account applies to; empty = all brands. |
Ad network integrations
| Field | Network | What it does |
|---|---|---|
client_id / client_secret | Google, Microsoft | The app the installation signs in with. The secret is stored encrypted. |
developer_token | Google, Microsoft | The network’s developer token — without it no ad accounts can be read. Encrypted. |
login_customer_id | Manager account (MCC) through which the ad accounts are reached. | |
merchant_id | Merchant ID in Merchant Center — required for shopping. | |
tenant | Microsoft | Tenant of the app registration, default common. |
store_id / sales_country | Microsoft | Store in Microsoft Merchant Center and sales country — required for shopping. |
api_key | ChatGPT | Advertiser API key of the ad account. Encrypted. |
target_countries | ChatGPT | Countries of the campaigns as ISO codes, comma-separated. |
product_feed_id | ChatGPT | ID of the product feed in Ads Manager — required for shopping. |
page_id, ig_user_id | Meta | Facebook page and Instagram account in whose name the ads appear (account choice of the social connection). |
dsa_beneficiary, dsa_payor | Meta | Beneficiary and payor under the Digital Services Act — required for ads in the EU. |
catalog_id, product_set_id, pixel_id | Meta | Product catalog in Commerce Manager (catalog ads), optionally an own product set; pixel for optimising on purchases. |
identity_id, identity_type, display_name | TikTok | Sender of the ads (own TikTok account, Spark Ads) or display name of an own identity. |
author_urn, sender_urn | Company page of the ads; member as sender of message and conversation ads. | |
ad_library_token | Meta | Optional own token for the ad library (competitor ads). Encrypted. |
research_client_key, research_client_secret | TikTok | Commercial Content API app for the ad library. The secret is encrypted. |
Settings & permissions
- Switches
marketing.ads.google.enabled,marketing.ads.microsoft.enabled,
marketing.ads.pinterest.enabled, marketing.ads.chatgpt.enabled — off by default, permission platform.settings.manage.
- Product feed
marketing.ads.feedLinkTemplate(product URL with{sku},{ulid}or{id}),
marketing.ads.feedCountry (default DE), marketing.ads.feedReturnPolicyUrl (returns page for ChatGPT).
marketing.ads.connect— connect, choose and disconnect ad accounts; see feed URLs.marketing.ads.view— see the networks’ status and the hand-over package.- API:
GET /api/v1/marketing/ad-platforms,GET /api/v1/marketing/ad-connections,
POST /api/v1/marketing/ad-connections/select-account, POST /api/v1/marketing/ad-connections/disconnect, GET /api/v1/marketing/ad-product-feed, GET /api/v1/marketing/ad-campaigns/{ulid}/handover.
FAQ & troubleshooting
“App credentials missing” when connecting. The network’s integration lacks client_id or client_secret. Add them under Settings → Integrations.
After signing in, “No ad account found”. Usually the developer token is missing or the signed-in account has no access to an ad account. Google manager accounts are deliberately not offered — they do not spend money.
Activating says “Access missing”. No ad account is chosen for the network in this brand (Google, Microsoft, Pinterest) or no Advertiser API key is stored (ChatGPT).
A shopping campaign fails with “Merchant Center” or “product_feed_id”. Shopping needs the product feed at the network and the ID on the integration (merchant_id, store_id or product_feed_id).
ChatGPT ads do not run in a country. OpenAI enables ads only in certain countries, differently per ad account. Ads Manager shows which. Octibiz shows this as a note at the network.
Where do I pause a ChatGPT campaign? With an Advertiser API key here, like any network. Without a key in the OpenAI Ads Manager.
A Google search campaign has no ad. The responsive search ad needs at least three headlines, two descriptions and a target URL in the first ad group. If something is missing, only the campaign and the group are created — add variants or the ad in the ad account. Performance Max, Display and Demand Gen need image assets, which you add to the campaign in the ad account.