Skip to content
All articles
Integrations

Ads: create, publish and measure ROI (Google, Meta and LinkedIn Ads)

Create and publish paid ads on Meta, Google Ads and LinkedIn Ads straight from Sellio (campaign, audience, budget and creative), created paused. Also import spend and performance from your accounts, attribute won opportunities to campaigns, and see ROI per campaign. The BYO model means the ad accounts are yours.

The Ads integration imports your paid media campaigns (Google Ads, Meta Ads, and LinkedIn Ads) and each one's spend into the CRM. With that, you attribute WON opportunities to the campaigns that originated them and see the real ROI per campaign: spend × revenue. This is the BYO ("bring your own account") model: the ad accounts and credentials are yours, with no intermediation on our side.

The integration starts inert: nothing happens until you fill in the platform credentials and enable it. The secrets (tokens, client secret) are stored encrypted in the CRM and are never displayed back to you. Each sync is idempotent: the same campaign (by its platform id) is updated, not duplicated.

Create and publish ads (Meta, Google and LinkedIn)

Beyond importing spend, you can CREATE and publish paid ads on Meta Ads, Google Ads and LinkedIn Ads straight from Sellio. The "Create ad" panel sits at the top of Marketing → Ads. An admin turns publishing on there; with an account connected via a WRITE token, you build the whole campaign (objective, daily budget, audience by country/age and the creative with headline, text, link, call to action and an image from the asset library).

  1. In Marketing → Ads, click Turn on ad publishing (admins only).
  2. Connect the ad account with a write token in Settings → Integrations (see below what each platform requires).
  3. Click Create ad, pick the platform, fill in campaign, audience and creative, and click Create (paused).
  4. The ad is created PAUSED on the platform: nothing spends. When ready, click Activate (confirmation) to put it live. Pause any time.
  5. Use Refresh status to pull the review/state (in review, active, paused) straight from the platform.
💡 Everything is created paused on purpose: since publishing involves real money on your ad account, nothing starts spending by accident. You create it, wait for the platform review, and only then activate. To publish (not just import), the token needs WRITE access: on Meta, a System User with ads_management plus the Facebook Page ID; on Google, the developer token plus write OAuth; on LinkedIn, the access token plus the Organization ID (author of the sponsored post).

The ad created here becomes an asset of the CRM campaign (campaign hub), so its spend and performance feed the same ROI panel described in the sections below. Google Ads starts limited to test accounts until your developer token is approved for production; Meta and LinkedIn may require app review/permission depending on your account.

Prerequisites

  • Google Ads: an account with campaigns, an approved Developer Token (from your MCC account's API Center), the Customer ID (123-456-7890), and an OAuth app in Google Cloud (client ID/secret + refresh token with the Google Ads scope).
  • Meta Ads: the Ad Account ID (act_XXXXXXXX) and a Marketing API Access Token with the ads_read permission.
  • LinkedIn Ads: the Account ID (sponsoredAccount) and an OAuth Access Token with the r_ads_reporting scope.
  • In Sellio, administrator access to save the credentials and enable the integration under Settings → Integrations.

What each platform requires

  • Google Ads: a Developer Token (from your MCC account's API Center), the ad account Customer ID (format 123-456-7890), and an OAuth app from your Google Cloud project (client ID, client secret, and a refresh token with the Google Ads scope). Optional: the Login Customer ID of the manager (MCC) account, if you access via manager. The CRM exchanges the refresh token for an access token and runs a GAQL query to bring in the campaigns and the cost for the last 30 days.
  • Meta Ads (Facebook/Instagram): the Ad Account ID (act_XXXXXXXX or just the number) and a Marketing API Access Token (System User or OAuth) with the ads_read permission. The CRM reads the campaigns with the embedded insights (spend, impressions, clicks).
  • LinkedIn Ads: the Account ID (your sponsoredAccount number) and a Marketing API OAuth Access Token with the r_ads_reporting scope. The CRM lists the campaigns and cross-references adAnalytics for spend/impressions/clicks.

Configure (per platform)

  1. Open Settings → Integrations and find the platform card: "Google Ads", "Meta Ads", or "LinkedIn Ads".
  2. Fill in the platform fields (see above for what each one requires). The secrets are saved encrypted; re-paste them if you need to update.
  3. Click "Save credentials" and then "Enable".
  4. Click "Sync campaigns" to import the campaigns and spend now. You can also sync from the Ads screen.

Campaigns and ROI

Under Marketing → Ads (or via the "View campaigns and ROI" link on the integration card) you see the imported campaigns, each with its platform, status, spend, currency, impressions, and clicks, alongside the ROI-per-campaign table. ROI is the attributed won revenue minus the spend; ROAS is the revenue divided by the spend (return on ad spend).

The ROI table also shows, per ad, the CPL (cost per click = spend ÷ clicks), the cost per deal (spend ÷ attributed won opportunities), and the conversion rate (won ÷ clicks). This lets you compare the efficiency of each ad, not just the total spend.

Each imported ad can be linked to a CRM Campaign through the "Campaign" column of the imported-campaigns table. Once you link it, the ad appears as an asset of that campaign in the campaign hub (alongside landing pages, posts, and CTAs), gathering everything from one initiative in a single place.

Opportunity attribution

On the same Ads screen, the "Opportunity attribution" section lists your WON opportunities with a campaign selector. When you link an opportunity to a campaign, the won value becomes part of that campaign's revenue in the ROI. The opportunity also stores that reference in the "Ad campaign" field.

💡 Only won opportunities (the "Won" stage or "Won" status) attributed to a campaign enter the ROI calculation. Opportunities without attribution are ignored in the report. Spend comes from the platform and revenue comes from your opportunities, so currencies are displayed as-is, with no conversion.

Limitation: the real APIs only respond with valid credentials from your accounts. Without credentials, the integration stays inert and the sync returns a clear error asking for configuration. The default spend window for Google Ads is the last 30 days.

How to test

  1. After saving and enabling, click "Sync campaigns" on the platform card.
  2. Open Marketing → Ads and confirm that the imported campaigns appear with platform, status, spend, currency, impressions, and clicks.
  3. In the "Opportunity attribution" section, link a WON opportunity to a campaign and check that the ROI/ROAS of that campaign now accounts for the revenue.

Troubleshooting

  • Google Ads 401/authentication error: invalid/expired refresh token, unapproved Developer Token, or wrong Customer ID. Regenerate the refresh token (Google Ads scope) and confirm the Login Customer ID if you access via MCC.
  • Meta Ads: no campaigns: the Access Token needs the ads_read permission and the Ad Account ID must be in the act_XXXXXXXX format (or just the number).
  • LinkedIn Ads: 403/no data: the token needs the r_ads_reporting scope and the Account ID must be the sponsoredAccount number.
  • It syncs but ROI stays zero: only WON opportunities attributed to a campaign enter the calculation. Attribute the opportunities on the Ads screen.
  • Different currencies: spend comes from the platform and revenue from the opportunities; the values are displayed as-is, with no exchange conversion.

Open this article inside the system

Read it and want to see it working?

The account is free and the whole manual is available inside the system, with an assistant that answers from this very content.

Create free account
Ads: create, publish and measure ROI (Google, Meta and LinkedIn Ads) · Sellio