Daily ad spend from Facebook and Instagram ads, without typing it in
Connect Meta and GeoSwap reads what each of your Facebook and Instagram ad campaigns spent, every day, and adds it to Spend. The Attribution report then shows Spend, Cost / event and ROAS for your Meta campaigns next to the conversions GeoSwap records on your website. All Meta spend is counted under the Paid social channel.
GeoSwap only reads. It never creates, changes or deletes anything in your Meta ad accounts.
Meta is still reviewing GeoSwap's app (its standard App Review for reading ads data). Until it finishes, Meta lets only people with a role on GeoSwap's app connect. If you'd like to connect now, contact support@geoswap.co to be added. Depending on what Meta does for people without a role, it may stop the sign-in, or let you finish and show no ad accounts to pick (GeoSwap then says none were shared): either way, contact support.
GeoSwap starts loading the last 13 weeks right away (the card says "Loading the last 13 weeks…"); the daily sync finishes anything left. The card then shows each ad account as "Synced" with the date. To add or stop ad accounts later, click Manage accounts.
| Permission | Why GeoSwap asks |
|---|---|
| ads_read | To read your ad accounts and each campaign's daily spend. It's read-only: GeoSwap never creates, changes or deletes anything in your ad accounts. GeoSwap asks for no other permission. |
| What | Details |
|---|---|
| Ad accounts | For each ad account you tick: its name, ID, currency and time zone. Ad accounts you don't tick aren't stored. |
| Campaigns | Per campaign per day: its ID, name and amount spent, in the ad account's own currency (converted to your reporting currency in the report). |
| Meta-reported purchases | Meta's own purchases and purchase value per campaign per day are stored with the daily figures (Meta reports other actions too; GeoSwap keeps only purchases) and shown as "Meta-reported purchases" on Channels with Group by set to Platform: Meta's own claim, which differs from GeoSwap's credited conversions by design. |
Spend is matched to the utm_campaign values on your ad clicks. A campaign that matches none is counted under Paid social with no campaign, so the channel's numbers stay right. For automatic matching, set these URL parameters on your Meta ads:
utm_source=meta&utm_medium=paid&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_id={{campaign.id}}
In Ads Manager, on each ad, paste it into URL parameters (under Tracking). Meta fills in the campaign name and ID for you.
The Meta campaigns table on Integrations shows how each campaign is matched. Editors and admins can change a match or apply a suggestion.
utm_campaign value is matched to a Meta campaign, reports show the campaign's name (a name you set yourself in GeoSwap wins).If something goes wrong after Meta sends you back, GeoSwap shows one of these messages:
| Message | What it means and what to do |
|---|---|
| Meta access wasn't granted. Connect again when you're ready. | You cancelled or declined in Meta's dialog. Nothing was connected. Click Connect Meta again when you're ready. |
| Meta didn't allow GeoSwap to read your ad accounts (ads_read). Connect again and allow it. | The permission to read your ads wasn't given. Connect again and allow it in Meta's dialog. |
| No ad accounts were shared with GeoSwap. Connect again and choose your ad accounts in Meta's dialog. | No ad account was picked in Meta's dialog. Connect again and choose the ad accounts GeoSwap should read. |
| That Meta sign-in expired or was already used. Connect Meta again. | The sign-in took longer than 10 minutes, or the page was reloaded or opened twice. Start again from Integrations. |
| Meta couldn't finish the sign-in. Try again, or contact support if it keeps happening. | Meta stopped the sign-in. Try again; if it keeps happening, contact support@geoswap.co. |
| Meta is limiting requests right now. Try again in a few minutes. | Wait a few minutes and connect again. |
| Meta didn't respond in time. Try again. | A temporary problem at Meta. Connect again. |
| Only an admin of this workspace can connect Meta. | Ask a workspace admin to connect it, or to make you an admin. It also shows if you finished the sign-in while signed in to GeoSwap as a different user: start again from the same browser. |
| Meta isn't available right now. | The connection is switched off on GeoSwap's side. Nothing for you to fix: try again later, or contact support@geoswap.co if it persists. |
| Meta hasn't approved GeoSwap for all yet; only people with a role on its app can connect. Contact support@geoswap.co. | Only while Meta is still reviewing GeoSwap: Meta lets only people with a role on GeoSwap's app connect. Contact support@geoswap.co to be added. |
| Couldn't connect Meta. Try again. | Something else went wrong. Try again; if it keeps happening, contact support@geoswap.co. |
If Meta later stops accepting GeoSwap's access (for example, GeoSwap was removed in your Meta Business settings), the card shows a red notice. Your synced spend stays in your reports. An admin can click Reconnect, or disconnect and choose what to keep.
Everything is in Integrations → Meta Ads → Manage accounts (admins):
Disconnecting in GeoSwap doesn't remove GeoSwap from your Meta account. To remove it there too, open Meta Business Settings → Integrations → Connected apps and remove GeoSwap.
You can also request deletion from your Facebook settings (remove GeoSwap and choose to delete your data). Meta tells us and we delete everything at once; the link Meta gives you shows the request's status on geoswap.co/meta/data-deletion. Reconnecting with a Meta login that can't read some of your syncing ad accounts asks the keep-or-delete question for just those ad accounts.