---
title: "Integrations"
url: "/docs/integrations"
canonical_url: "https://crunchjunkie.io/docs/integrations"
markdown_url: "https://crunchjunkie.io/docs/integrations.md"
language: "en"
type: "doc"
summary: "Connect your ad platforms and analytics tools, and fix the occasional hiccup."
site: "CrunchJunkie"
llms_txt: "https://crunchjunkie.io/llms.txt"
---

# Integrations
Source: https://crunchjunkie.io/docs/integrations

Connect your ad platforms and analytics tools, and fix the occasional hiccup.

## How connecting works
Most integrations use OAuth, the same secure standard you see when an app asks to "Continue with Google". You click Connect, authorize on the provider's own screen, and CrunchJunkie receives a scoped, revocable access token — never your password. A few tools work a little differently: the self-hosted analytics tools (Matomo and Piwik PRO) take your own instance URL plus a read-only API token, Brevo and ChatGPT Ads take a per-account API key, and Mailchimp takes either its own sign-in (OAuth) or a key. Either way, the credential is encrypted at rest, grants read-only access, and can be revoked from the provider at any time.

After connecting, you choose which accounts, properties, or sites to import. The first sync runs immediately; from then on, data refreshes automatically once a day. The Integrations page shows the health of every connection, so you always know your data is current.

Disconnecting a data source deletes the figures imported through it, and the stored token once nothing else in your workspace uses the same login. One sign-in can serve several accounts and clients, so the token stays until the last of them is disconnected; a Merchant Center login also stays while your AI Shopping catalogue imports through it. Reddit Ads tokens are revoked at Reddit as well. Google and Meta tokens are deleted on our side only, because revoking one at Google or Meta ends every connection the same person made with that login; to withdraw the access there too, remove CrunchJunkie in that account's settings.

## Google Ads and GA4
For Google Ads, click Connect on the Google Ads card and authorize with the Google account that has access to the relevant ad accounts. If you manage clients through an MCC, you'll be able to select individual accounts under it — import only the ones you report on. GA4 works the same way: authorize with Google and pick the specific properties you need.

Both integrations require that the Google user you authorize with has at least read access to the accounts or properties. If an account doesn't appear in the selection list, it's almost always a permissions issue on the Google side rather than a CrunchJunkie one.

If that user later loses access to an account (removed from the manager account, or the account cancelled), its report widgets say "No access" instead of showing figures, and the report shows a banner after the next daily check. Once access is granted again, the figures can take up to 10 minutes per server to come back, and the banner clears after the next daily check.

Shared links, present mode and the PDFs CrunchJunkie renders show such a widget as "Data unavailable", without the account or the reason. If the PDF render fails and the report page falls back to your browser's print, that PDF shows your team's wording instead. An AI summary notes only how many accounts had no data. Through the REST API the widget comes back as null, and meta.unavailable gives the reason (no_access or error) and Google's code; the MCP tool get_report_data returns the same under _meta.unavailable.

The same goes for a GA4 report Google does not answer at all: a busy property is asked again a couple of times, and a widget Google still did not answer says "Not loaded" (shared links and PDFs: "Data unavailable"), never 0. Matomo, Merchant Center and Brevo do the same when their main read fails. Since 9 October 2026 so do the tables and donut charts of Meta Ads, Microsoft Ads, Amazon Ads, Reddit Ads, ChatGPT Ads, Piwik PRO, Mailchimp, Business Profile, Bing Webmaster Tools and Search Console: a read that failed says "Not loaded", or "No access" when the platform refused the account, instead of "No data for this period". The same holds for Business Profile KPIs and charts, which used to drop out of the report when Google's read failed, and for the Reddit Ads video funnel. A Business Profile KPI whose review read answered while the daily figures failed keeps its review figures and shows "—" for the rest, a failed comparison period means no prior data rather than a change from 0, and the average rating of a location without reviews is "—", not 0. When only a second call fails (Matomo's goals, Merchant Center's performance report, Brevo's revenue attribution), the figures built on it show "—" and the rest of the widget stays. A rate without a basis, such as a cost per conversion with no conversions or a CTR without impressions, is "—" too.

## Meta and LinkedIn
Meta Ads connects through Facebook Login. Authorize with a user who has a role on the relevant Business Manager and ad accounts, then select the ad accounts to import. Because Meta periodically requires re-authorization, CrunchJunkie watches token validity and warns you before a connection lapses. Once a day it also checks each connected Meta ad account for an account that has stopped delivering (see Signals & Automations).

LinkedIn Ads follows the same OAuth flow. Authorize with an account that has access to the Campaign Manager ad accounts you report on, and select them during setup. As with every integration, you grant read access only — CrunchJunkie never makes changes to your campaigns.

## Facebook & Instagram (organic)
Separate from Meta Ads, the Facebook & Instagram connector pulls ORGANIC Page and Instagram metrics — how your posts, reach and audience are doing, not your paid campaigns. Click Connect on the Facebook & Instagram card in Data → Integrations, authorize through Facebook Login for Business with a user who has a role on the Page, tick the Page (and its linked Instagram Business account) in the consent step, and assign it to a client. It's a distinct connection from the Meta Ads one, so you can revoke either without touching the other, and it grants read-only access.

Instagram data is the rich half: views, reach, interactions, likes, comments, shares, saves and follower count, plus your recent media. Because Instagram counts unique accounts over 30 days at most, reach and accounts engaged are read once over the last 30 days of the report's period (the whole period when it is shorter), labelled "(30d)", and the scorecard names those dates; if that read fails they show an em dash, never an older window's figure. Facebook Page data covers page views, reach, post engagement, follows, new follows and video views, the current follower total, and your recent posts with their likes, comments and shares. Page reach is a daily unique count: the chart shows each day's reach, but a scorecard over more than one day shows an em dash with the reason, because the same people reached on several days cannot be added up (Page views do add up). Page-level metrics are date-windowed, so a Page that hasn't posted recently shows little over a recent range — pick a date range that covers real posting activity to see the numbers fill in. Any metric an account doesn't serve shows an em dash, never a fabricated zero.

Two honest notes. First, organic metrics carry no ad spend, so this connector is deliberately left out of cross-channel spend blends and "All channels" totals — mixing organic reach into paid spend would distort both. Second, reading the text and engagement of individual Facebook Page posts (the "Top Facebook posts" table) requires Meta's Advanced Access for the pages_read_engagement permission, which goes through Meta App Review; Instagram, Facebook Page insights and the follower total all work without it.

## Microsoft Ads and Search Console
Microsoft Ads (Bing) and Google Search Console each connect with a single OAuth click on their card in the Integrations page. For Microsoft Ads, authorize with a user who has access to the ad accounts and choose which to import. Search Console connects via Google and lets you pick the verified properties whose organic search data you want in reports.

Both refresh daily alongside your other sources, and both appear in the same connection-health view so you can manage your entire stack from one screen.

## Bing Webmaster Tools
Bing Webmaster Tools connects with one Microsoft sign-in (OAuth) and read-only access: CrunchJunkie asks Bing for the webmaster.read permission, never for the right to change anything, and never for an API key. On the Bing Webmaster Tools card in Data → Integrations, click Connect, sign in with the Microsoft account that has your sites in Bing Webmaster Tools, and allow access. Then tick one or several sites and pick the client they belong to. Only sites verified in Bing Webmaster Tools report data; an unverified site is listed but can't be picked. Any member of the workspace can connect; a read-only seat can't. If Bing ever refuses the stored sign-in, the connection shows Needs attention and one reconnect with the same Microsoft account brings back every client that uses it. To withdraw access at Bing, remove CrunchJunkie under Bing Webmaster Tools → Settings → API Access.

What you can report on. Clicks, Impressions and CTR per day for the whole site; the top queries and top pages with clicks, impressions, CTR, average click position and average impression position; crawl figures per day (pages crawled, crawl errors, responses by HTTP status, URLs blocked by robots.txt, pages in the index, inbound links, pages flagged for malware); Bing's current list of crawl issues; the site's most-linked pages; and the status of its sitemaps and feeds. KPIs, line and bar charts, tables and donuts all work, in the builder, in Draft with AI, in shared links and PDFs, and through the API and the AI assistant connector.

How to read the numbers, honestly. Bing's clicks and impressions include every Bing vertical, so web search, Copilot and chat, news, images, videos and the knowledge panel all count together (Bing has done so since 24 March 2023). Bing can't split them, so we label them "all verticals incl. Copilot" and never call them web search. CTR is total clicks divided by total impressions over the period, never an average of daily rates. Bing gives no average position for the whole site, only for its top queries and pages, so a position appears in those tables and not in a KPI. Those tables count Bing web search only: Bing states that keyword, page, device and country data is not available for Copilot, chat and other verticals, so query and page totals are lower than the site totals. Those tables come from Bing as weekly buckets: a table for a period pools the Bing weeks dated inside it, and says which weeks under the table (for example "the weeks of 6 Oct, 13 Oct 2026"), rather than pretending to cover the period's days exactly. Positions over several weeks are weighted, impression position by impressions and click position by clicks. Bing counts its days in US Pacific time, like Search Console. Crawl counts such as pages crawled are added up over the period's days; levels such as pages in the index, inbound links or URLs blocked by robots.txt show the value of Bing's latest day in the period, and the widget names that day. Bing keeps about six months of crawl data. Bing's figures usually arrive a day or two late. When Bing's latest day falls inside the period, the report counts the period up to that day, exactly like Bing's own Search Performance screen (Bing's data lags about two days), and the widget names the days Bing has no data for yet. The comparison covers the matching days: the same number of days immediately before for a previous period, the same days of the previous month for calendar months (a clipped month is compared with the first days of the earlier month, whole months differ in length), and the same dates a year earlier for the previous year. A period that starts on the 1st of a month (this or last month, a quarter, a year, or one "to date") is never moved into the month before: it is counted from its 1st to Bing's latest day (for example 1–29 Oct against 1–29 Sep; March counted to the 30th against all of February). When Bing's data can't cover both windows, the widget shows no change rather than a skewed one. A weekly query or page table is compared only with the same number of Bing weeks, and the note names both sets of weeks. A day Bing didn't return is a gap, never a zero.

Google vs Bing. When a client has both Search Console and Bing Webmaster Tools connected, the Google vs Bing widget (a table or a line chart) shows the two engines side by side for the same days. They are never added together: Search Console counts Google web search, Bing counts all of its verticals, so a sum or a share of the total would mix different things.

Not in this connector yet: Bing's AI Performance report (how often Copilot and Bing's AI answers cite your pages). Bing shows it only inside Bing Webmaster Tools and offers no API for it; we'll add it as soon as there is a reliable way to bring it in. Bing's keyword research isn't included either: it estimates search demand per keyword rather than measuring your site, and the Rank Tracker already covers keyword positions in Bing.

Troubleshooting. "Bing sent the sign-in back without its security check" means Bing returned without the state value CrunchJunkie sends to verify the sign-in: nothing was stored, and support can see the cause in the log. "Bing didn't send a lasting sign-in" means Bing issued no refresh token: remove CrunchJunkie under Bing Webmaster Tools → Settings → API Access and connect again. A site shown as not verified has to be verified in Bing Webmaster Tools first. Bing limits how often an account may call its API; when it answers ThrottleUser or ThrottleHost, CrunchJunkie waits and asks once more, and a widget that still can't be read says "Not loaded", never zero. If a site's figures look empty, check that the client's site is the one verified in Bing: http and https, or www and the bare domain, are different sites there.

## Amazon Ads
Amazon Ads connects over OAuth (Login with Amazon) and pulls read-only Sponsored Products reporting. Because Amazon's API is region-split, you pick the advertiser's marketplace region when you connect.

To connect:

1. Make sure the client you're reporting for exists under Clients (you'll assign the connection to it).
2. Open Data → Integrations and click Connect on the Amazon Ads card.
3. Choose the advertiser's marketplace region — Europe (EU), North America (NA), or Far East (FE). This must match where the ad account is based.
4. Sign in with Login with Amazon using an Amazon user that has access to the advertiser's account, and approve the read-only access.
5. Pick the exact ad profile (advertiser account) to import, and assign it to the client. The first sync starts immediately; data then refreshes daily.

To report on a client's account, the client either adds your Amazon user (with Viewer/Reporting access) in their Amazon Ads console, or authorizes the connection themselves during step 4.

Available data covers Sponsored Products across campaigns, ad groups, keywords/targeting, customer search terms, and advertised vs purchased products — with metrics including Impressions, Clicks, Spend, CTR, Avg. CPC, CPM, Orders, Sales, Units, ACOS and ROAS. Amazon's reports are generated asynchronously, so the first load of a breakdown can take a few moments.

Not yet included: Sponsored Brands, Sponsored Display, and Amazon DSP (streaming/OTT video, including Twitch) — DSP requires a separate Amazon approval beyond standard API access. And one note if you ever see a "bad scope" error on connect: that means the Login-with-Amazon profile isn't associated with approved Amazon Ads API access yet — it's an Amazon account-setup state, not a CrunchJunkie issue.

## Reddit Ads
Reddit Ads connects over OAuth and pulls read-only campaign reporting. Click Connect on the Reddit Ads card in Data → Integrations, authorize with a Reddit user who has access to the advertiser's Ads account, then pick the ad account to import and assign it to a client. The credential is stored encrypted, grants read-only access, and can be revoked from Reddit at any time; data refreshes daily like every other source.

Available metrics cover everything Reddit's reporting API serves: delivery (Impressions, Clicks, Spend, CTR, Avg. CPC, eCPM, Reach, Frequency), conversions overall (Conversions, ROAS, Conversion value) and per pixel event — Purchases with value, items, cost per purchase and purchase ROAS, Sign-ups, Pixel leads, Add to cart, Page visits, Content views, Searches and Key conversions — app-install campaigns (installs, cost per install, app revenue and ROAS) and video depth (views, 3s/5s/10s, 25/50/75/95/100%, viewable impressions, expanded plays and completion rate, including a video engagement funnel widget) — broken down over time or by campaign, ad group, ad, community, placement, geo, device, gender, interest or keyword. Reach is a unique count, so it is never added up over campaigns or days: the scorecard reads the period's own reach from Reddit, the chart and the day table each day's own reach, and Frequency is impressions divided by that reach. Conversion rate shows an em dash with the reason: Reddit reports the key conversion only as click-through and view-through conversions together, and a view-through conversion has no click behind it, so it cannot be divided by clicks; the click-through count of each event, such as Purchases (click), is reported. One honest detail: not every account reports every conversion field, so CrunchJunkie asks the API itself on first fetch and any metric your account doesn't serve shows an em dash rather than a made-up zero. When you draft a report with AI, a connected Reddit account contributes a key-metrics scorecard and a spend-and-conversions-over-time chart automatically, and blends into cross-channel comparisons alongside your other paid sources.

## ChatGPT Ads
ChatGPT Ads (OpenAI's advertising platform) connects with an account API key rather than OAuth. In OpenAI Ads Manager, open Settings → API Keys and create a key — it's scoped to a single ad account. In CrunchJunkie, open Data → Integrations, click Connect on the ChatGPT Ads card, choose the client, and paste the key. CrunchJunkie verifies it against the account, stores it encrypted, and reads only that account's reporting; data refreshes daily like every other source.

Available metrics cover delivery and efficiency — Impressions, Clicks, Spend, CTR, Avg. CPC and CPM — plus Conversions (also split into click-through and view-through), Cost per conversion, Conversion rate, Purchases, Purchase value, Cost per purchase and ROAS, by campaign or over time. Country and device tables show conversions too, from OpenAI's own country and device breakdown. A conversion row is joined to a delivery row only when both name the same country or device (the same text, or a country code and its name); one that does not match is listed on its own, with an em dash in the delivery columns, so no conversion is counted on the wrong row and the table still adds up to the account. Product tables show delivery only; their conversion columns show an em dash.

How the conversion numbers are defined: Conversions are your campaigns' goal conversions within 30 days of a click or 1 day of a view, dated by the day of that click or view. These are OpenAI's default windows, and CrunchJunkie sends them with every request, so a later change to OpenAI's defaults cannot move your report. Conversion rate divides click-through conversions by clicks, because a view-through conversion has no click behind it. Purchases and Purchase value count every attributed purchase, including purchases on campaigns optimised for a different goal, and ROAS is purchase value divided by spend. An account that has never sent a purchase event shows an em dash for those rather than a zero, and in an "All channels" widget its spend is left out of the blended ROAS (it still counts in Spend). Days follow the ad account's own timezone, and OpenAI treats the current day's conversions as preliminary until they are processed. Money is shown in the ad account's own currency. When you draft a report with AI, a connected ChatGPT Ads account contributes a key-metrics scorecard and a spend-and-clicks-over-time chart automatically, and blends into cross-channel comparisons alongside your other paid sources (spend, impressions, clicks, conversions and purchase value).

## Brevo
Brevo (formerly Sendinblue) connects with an account API key rather than OAuth — Brevo's OAuth is reserved for its own partners, so a key is the only route for a third-party tool.

First, create the key in Brevo. Sign in, click your profile name (top right) → SMTP & API → API Keys → "Generate a new API key". Give it a name like "CrunchJunkie" and copy it straight away: Brevo shows a key only once. If you manage several Brevo accounts, create one key per account — a key belongs to the account it was generated in.

Then connect it in CrunchJunkie. Open Data → Integrations, click Connect on the Brevo card, choose the client and paste the key. CrunchJunkie verifies it against the account immediately, stores it encrypted, and only ever reads campaign statistics with it. To revoke access later, delete the key in Brevo and reconnect with a new one.

Available metrics cover reach — Campaigns sent, Emails sent, Delivered and Delivery rate — engagement (Open rate, Unique clicks, Click rate, Click-to-open rate), list health (Hard and Soft bounces, Bounce rate, Unsubscribes, Complaints and their rates) and, where ecommerce tracking is active on the Brevo account, Orders, Revenue and Average order value in the account's display currency. Break them down by campaign or by send day, or plot them over time.

Three honest details specific to email. Brevo reports each campaign's statistics as a running total for that campaign, not day by day — so a "day" in a chart is the campaigns sent that day, pooled, and a week's open rate is opens divided by deliveries across the whole week, never an average of daily rates. "Open rate (trackable)" deliberately excludes opens generated by Apple Mail Privacy Protection, which pre-loads every email whether or not a person read it; the excluded machine opens are shown separately as "Apple MPP opens". "Open rate (incl. MPP)" is the raw figure with those machine opens left in — it is what Brevo's own campaign report headlines, so use it to reconcile, and the trackable one to judge. Click-to-open rate divides unique clicks by all unique opens (a click is always an open, whichever mail client made it). And Orders and Revenue show "—" rather than 0 when the Brevo account has no ecommerce tracking, because a missing number is not a zero.

## Mailchimp
Mailchimp connects in one of two ways. The simplest is Continue with Mailchimp: you sign in on Mailchimp's own screen, pick the account, and CrunchJunkie receives a read token — never your password. Mailchimp tokens do not expire; you revoke them under Account & billing → Extras → Registered apps. If you would rather use a key (agencies often hold one per client account), create it in Mailchimp under your profile → Account & billing → Extras → API keys, copy it once, and paste it on the Mailchimp card in Data → Integrations. The key ends in its data center ("-us21"), which is how CrunchJunkie knows which Mailchimp server to read from. Either credential belongs to exactly one Mailchimp account and to the user who created it: an agency with several client accounts connects each account once, and a user removed from the account takes the credential with them.

Available metrics cover reach — Campaigns sent, Emails sent, Delivered and Delivery rate — engagement (Open rate, Unique and Total opens, Unique and Total clicks, Click rate, Click-to-open rate, Forwards), list health (Hard and Soft bounces, Syntax errors, Bounce rate, Unsubscribes, Complaints and their rates) and, where a store is connected to the Mailchimp account, Orders, Revenue and Average order value in the store's currency. Break them down by campaign, by audience (the list a campaign went to) or by send day, or plot them over time.

Four honest details specific to email. Mailchimp reports each campaign's statistics as a running total for that campaign, not day by day — so a "day" in a chart is the campaigns sent that day, pooled, and a week's open rate is opens divided by deliveries across the whole week, never an average of daily rates. Delivered is emails sent minus bounces, the definition behind Mailchimp's own "successful deliveries". "Open rate (trackable)" counts only unique opens from mail clients that do not fetch through a privacy proxy — Mailchimp's proxy-excluded figure — because Apple Mail Privacy Protection marks every email opened whether or not a person read it; the excluded machine opens are shown separately as "Proxy opens", and "Open rate (incl. MPP)" is the raw figure Mailchimp's own report headlines, there to reconcile against. Click rate counts people who clicked (Mailchimp's unique subscriber clicks), not links. And Revenue is the order total net of shipping and tax, shown as "—" rather than 0 when no store is connected, because a missing number is not a zero.

Not in this connector yet: audience growth over time. Mailchimp's growth-history and daily-activity endpoints do not document the format or time zone of their month and day fields, so we would rather add them once a live account has settled what they mean than chart them on a guess.

## Matomo
Matomo doesn't use OAuth — every Matomo instance is self-hosted or on Matomo Cloud, so you connect it with your instance URL and a read-only API token (Matomo calls this a "token_auth"). It works with both Matomo Cloud and self-hosted Matomo 4 and 5.

First, create the token in Matomo. Sign in as a user who has at least View access to the site you want to report on (using a View-only user keeps the token strictly read-only), then go to the gear icon (Administration) → Personal → Security → Auth tokens → "Create new token". Confirm your password, give the token a description like "CrunchJunkie", and create it. Matomo shows the token only once, so copy it straight away. You can leave "Only allow secure requests" enabled — CrunchJunkie sends the token in the request body, which satisfies that setting.

Then connect it in CrunchJunkie. Open Data → Integrations and click Connect on the Matomo card. Paste your instance URL — the address before /index.php, for example https://yourcompany.matomo.cloud — and the token_auth, then click Connect. CrunchJunkie verifies the credentials immediately and lists the sites the token can see. Pick the site you want and assign it to a client. The token is stored encrypted, access is read-only, and data refreshes daily like every other source. To rotate or revoke access later, delete the token in Matomo (Administration → Personal → Security → Auth tokens) and reconnect with a new one.

Available metrics include Visits, Unique visitors (approx.), Actions, Actions / visit, Bounce rate, Conversions, Conversion rate, and Revenue — over time or broken down by channel, source, campaign, country/region/city, device, browser, OS, top/entry/exit pages, and goals. One note on accuracy: unique visitors are never added up across days, because a visitor who came on several days would count once per day. A scorecard shows Matomo's own unique-visitor count for the whole period, and the breakdown tables use Matomo's count for each row. Matomo only counts unique visitors over a date range when the instance processes them for ranges; where it does not, the figure shows an em dash with the reason. The chart and the day table show each day's own count. Conversion rate is the visits that converted at least one goal divided by all visits, which is Matomo's own conversion rate, so a visit that converts several goals counts once and the rate never passes 100 %.

## Piwik PRO
Piwik PRO also connects with credentials rather than OAuth, using its API client-credentials grant. It works with Piwik PRO Cloud and on-premises instances.

First, create an API client in Piwik PRO. As an admin, open Settings → API (Administration) and create a new API credential — Piwik PRO issues a Client ID and Client Secret. These act like a scoped, revocable key for read access to your analytics data.

Then connect it in CrunchJunkie. Open Data → Integrations and click Connect on the Piwik PRO card. Paste your instance URL — your Piwik PRO address, for example https://yourorg.piwik.pro — together with the Client ID and Client Secret, then click Connect. CrunchJunkie authenticates immediately, lists the apps (websites) the credential can access, and you pick one and assign it to a client. Credentials are stored encrypted; we mint a short-lived token per request, so nothing long-lived is kept.

Available metrics include Sessions, Visitors, Page views, Unique page views, Pages / session, Bounce rate, Goal conversions and Conversions / session — over time or broken down by channel, source, source/medium, campaign, keyword, country/region/city, device, browser, OS and top/entry/exit pages. Reports respect Piwik PRO's "scope" model: session-level breakdowns (channels, geo, devices) and page-level breakdowns (top pages) each use the metrics that belong to that scope, so figures stay consistent. Visitors on a scorecard are Piwik PRO's own count for the whole period, so someone who came on several days counts once; the chart and the day table show each day's visitors. Conversions / session is goal conversions divided by sessions: one session can convert several goals, so it is a count per session that can be above 1, not a share of sessions (it used to be called Conversion rate, and saved widgets switch to it by themselves). Note Piwik PRO data has roughly a two-hour processing delay, so the current day is usually still filling in.

## Google Business Profile
Google Business Profile (formerly Google My Business) brings your local-listing performance into reports — how customers find and act on your Business Profile across Google Search and Maps. It shares the same Google sign-in as GA4, Search Console and Merchant Center, so connecting is one click: on the Google Business card in Data → Integrations, click Connect, authorize with Google, and leave the Business Profile permission ticked on the consent screen (or CrunchJunkie can't read your listing). Access is read-only. Then pick which location to report on and assign it to a client — multi-location and agency accounts list every location you manage.

Available metrics: impressions split by surface and device (Google Search vs Maps, desktop vs mobile), and customer actions — calls, website clicks, direction requests, messages, bookings, and food orders/menu clicks for restaurants — trended over time or totalled as KPIs. A Top search keywords table shows the queries people actually typed to find the listing (this is monthly data: a report on a week or on 30 days shows the whole calendar months it touches and names them under the table; Google gives a low-volume term only as an upper bound, shown as "< N" and never added in or drawn in the donut). Reviews and average rating come in as KPIs too. Two honesty notes: Business Profile performance data lags real time by about two to three days on Google's side, and Reviews / Avg. rating are the current totals for the location, not a sum over the report's date range — the KPI says so with the date they were read.

Like every source, Google Business Profile flows into Draft with AI, the report builder, shared links and PDF exports, and refreshes daily. It's an organic, local-presence channel with no ad spend, so it is deliberately left out of the paid "All channels" cross-channel totals (adding a spend-less source there would distort CPC and ROAS) — you report on it in its own section, exactly like the Facebook & Instagram organic connector.

## More platforms coming soon
The Integrations page also lists platforms we're building next, shown as "Coming soon" so you can see where the roadmap is headed: Pinterest Ads, Snapchat Ads, X (Twitter) Ads, Shopify, Klaviyo, HubSpot, Mailchimp, Criteo, Taboola and Outbrain. These are placeholders that capture demand — they are not live connectors yet, so you can't connect them or pull data from them today, and they don't appear in Draft with AI. If one of these is important to your reporting, let us know and it helps us prioritise. We'll announce each on the changelog as it ships.

## "Needs attention" alerts
CrunchJunkie watches your connections so you don't have to. When something needs your input, it surfaces in the Needs attention area on the Integrations page — and it appears there before a report goes out with a gap, not after a client spots one.

Two kinds of alert show up here. The first is a reconnect prompt: when a provider expires or revokes a token (often after a password change, a removed permission, or Meta's periodic re-authorization), the affected integration is flagged with a Reconnect banner. One click takes you back through OAuth to restore it, and the daily sync resumes. The second is a bring-your-own-AI-key failure: if you run AI Visibility on your own provider keys and a key stops working — expired, out of quota, or revoked at the provider — that failure is raised in Needs attention too, so a silent scan failure never goes unnoticed. Clear the alert by reconnecting the source or updating the key, and the flag disappears on the next successful sync or scan.

## Troubleshooting connections
Most issues come down to one of three causes. First, expired or revoked tokens: if a provider invalidates a token (often after a password change or a permissions update on their side), you'll see a "Reconnect" banner — click it and re-authorize to restore the connection. Second, missing permissions: if an account or property doesn't show up during setup, confirm the user you authorized with has at least read access to it on the provider's platform. Third, a stale sync: if numbers look out of date, check the last-sync time on the Integrations page; you can trigger a manual refresh rather than waiting for the daily cycle.

If a connection still won't behave after reconnecting and confirming permissions, contact support at hello@crunchjunkie.io with the workspace name and the affected integration, and a real person will help you sort it out.
