Google Ads, Microsoft Advertising and TikTok Ads each connect through that platform's own official OAuth login (Meta Ads is coming soon). From the Connect page, click "Connect" next to a platform and sign in directly on its own secure screen — PaceWise never sees or stores your password.
Connect any number of accounts across your agency.
Facebook and Instagram campaigns, one connection.
Bing Ads campaigns, synced the same way.
Connect a TikTok Ads account the same way.
Campaign names, daily/lifetime budgets, spend, clicks, impressions and conversions — pulled every 15 minutes to power pacing, alerts and reports.
Pausing a campaign, or editing a campaign's daily budget. PaceWise is read-only by default — nothing changes on the platform until you explicitly confirm it, and every change is logged to an audit history you can review.
PaceWise never requests billing access, account-level settings, or user-management permissions on any platform — and you can disconnect an account at any time from the Connect page, which immediately revokes PaceWise's access.
Built in. Connect either one from Settings → Agency settings and alerts start arriving in the channel you pick. No Zapier, no webhook.
PaceWise sends one outbound webhook to Zapier; Zapier creates the task, card or item in ClickUp, Trello, Asana, monday.com or HubSpot.
After this, adding a new destination is just adding a Zapier action — no further work in PaceWise.
In Zapier, start a new Zap. For the trigger, choose Webhooks by Zapier → Catch Hook. Zapier gives you a unique URL.
https://hooks.zapier.com/hooks/catch/…Go to Settings → Agency settings → Outbound webhook URL, paste the URL, and save.
Back in Zapier, click Test trigger — it waits for a live event, so trigger a real alert in PaceWise. Once Zapier catches it, it learns the field names automatically and they're ready to map.
Every request is a single JSON object. Its shape depends on the event field — two events exist today.
| Field | Type | Sent on | Meaning |
|---|---|---|---|
| event | string | Both | Which of the two events this is. |
| agencyName | string | Both | Your agency's name in PaceWise. |
| client.id | string | Both | The affected client's PaceWise ID. |
| client.name | string | Both | The affected client's name. |
| triggeredAt | string (ISO 8601) | Both | When it fired, in UTC. |
| metric | string | Alert | Which metric breached — e.g. PROJECTED_PCT, ROAS. |
| value | number | Alert | The metric's value at the moment it triggered. |
| threshold | number | Alert | The threshold the rule was set to. |
| operator | string | Alert | GREATER_THAN or LESS_THAN — which way the rule was set. |
| campaignsPaused | number | Auto-pause | How many campaigns were paused for this client. |
{
"event": "alert.triggered",
"agencyName": "Northlight Media",
"client": { "id": "cl_84a2", "name": "Acme Corp" },
"metric": "PROJECTED_PCT",
"value": 118.4,
"threshold": 110,
"operator": "GREATER_THAN",
"triggeredAt": "2026-08-27T09:41:00Z"
}
Add one of these as the action step after your Catch Hook trigger. Field mappings below are suggestions that read well in each tool.
Point it at a list you check daily — a dedicated "PaceWise Alerts" list keeps it clear of client delivery work.
client.name + metric — e.g. "Acme Corp — PROJECTED_PCT alert"value, operator and threshold so the card reads naturallyevent is auto_pause.triggered, Normal otherwise (use a Zapier Filter or Path step)Same shape as ClickUp — a board and list PaceWise cards land in, separate from your working boards.
client.name + metric, same pattern as abovevalue, operator, thresholdevent is auto_pause.triggeredDrop these into a project your account managers already watch — Asana tasks get actioned fastest where the client work already lives.
client.name + metricvalue, operator, threshold; include triggeredAt for a timestampclient.name if you keep a lookup table in Zapier, or leave unassigned for triageWorks best against a dedicated board with a status column and a number column — both line up with what PaceWise sends.
client.name + metricvalue — a Numbers column keeps it sortableevent is auto_pause.triggered, "Alert" otherwiseBest as a task on the client's existing company or deal record, so the alert appears where your account manager already looks.
client.name + metricvalue, operator, thresholdclient.name as the lookupThis direction only: PaceWise → HubSpot. Creating a PaceWise client automatically when a HubSpot deal closes would need PaceWise to accept inbound requests too — a separate piece of work, not part of this webhook.
Confirm the URL saved in PaceWise Settings (reload the page to check it stuck), then trigger a real alert rather than waiting on the test.
Add a Filter by Zapier step right after the trigger, keyed on the event field, and build two separate action paths.
One Zap can hold multiple action steps — send the same event to ClickUp and Slack in one Zap; no need for a second webhook.
Check Zapier's Zap history for errors first. If PaceWise never reached the endpoint, the alert likely hasn't fired yet — thresholds are evaluated on PaceWise's regular sync schedule.
PaceWise is a next-generation, AI-powered PPC budget pacing and management platform for agencies and in-house teams. It brings spend visibility, pacing alerts and budget control across Google Ads, Microsoft Ads and TikTok Ads — with Meta coming soon.