# Run ads with conversions

The complete checklist for Google Ads and Meta to count your sign-ups and sales - what goes in the console, what goes in your app, and how to prove it before you spend.

An ad platform optimises toward the conversions it is told about. Tell it nothing and it optimises toward clicks. This page is the whole setup, in order, for Google Ads and Meta. Each step links to the page with the detail.

## 1. In the ad platforms

| Platform   | Create                                                                             | You will need                          |
| ---------- | ---------------------------------------------------------------------------------- | -------------------------------------- |
| Google Ads | A conversion action for **sign-up** and one for **purchase** (Goals › Conversions) | the `AW-` conversion id and each label |
| Meta       | A dataset (pixel) in Events Manager, and a Conversions API access token for it     | the pixel id and the token             |
| GA4        | A web data stream, and a Measurement Protocol API secret for it                    | the `G-` measurement id and the secret |

Where each id sits in each vendor's console is listed in [Providers](/tracking/providers#where-each-id-lives).

## 2. In the BuildBase console

1. **Settings › Tracking &amp; Tags** - add Google Ads, Meta Pixel and GA4 with those ids.
2. On the Google Ads entry, fill in **Conversion labels** for sign-up and purchase. A blank label means that event is not reported to Google Ads, and nothing errors. See [Events](/tracking/events#making-your-own-event-a-conversion).
3. On the Meta Pixel and GA4 entries, turn on **Server-side conversions** with the token and the secret. That covers the sale whose buyer closed the tab. See [Server-side conversions](/tracking/server-side#let-buildbase-send-it).
4. **Auth › Clients** - attach all three to **every app on the ad's path**. That usually means your marketing site, where the ad lands, and your app, where the sign-up and the sale happen. A tag attached only to the app never sees the click; one attached only to the site never sees the sale.
5. **Send a test conversion** for Meta with a test event code set, and check Events Manager › Test events. Clear the code afterwards: while it is set, every conversion goes to Test events.

## 3. In your app

Everything on the [Overview](/tracking/overview#start-here) checklist, and in particular:

- **`@buildbase/sdk` 0.0.68 or later** in every app on the path. Earlier releases lose the checkout step on Safari, and can credit a conversion to the wrong one of two ad clicks.
- **A consent banner on the page the ad lands on.** Ad tags load only after a visitor accepts marketing. A visitor who is never asked is measured as one who refused, and never becomes a conversion anywhere. See [Consent](/tracking/consent).
- **Restore the answer on every page load**, in every app. The sign-up usually happens a page or a domain later than the answer.
- **One registrable domain** from the landing page to the sale (`example.com`, `app.example.com`). The click id is kept in a cookie on that domain. If the site and the app are different domains (`example.com` and `example.io`), nothing carries across and no sale is attributed.
- **If your app sets a Content-Security-Policy**, allow the tags' origins. See [Providers](/tracking/providers#content-security-policy).

## 4. Prove it before you spend

Click your own ad, or open the landing page with `?gclid=TEST-1&utm_source=google`. Accept the banner, sign up, and buy with a Stripe test card.

| Check                           | Where                                                                                           |
| ------------------------------- | ----------------------------------------------------------------------------------------------- |
| The tags load on both apps      | `window.__buildbase.tracking.installed` in the console of each - see [Verify](/tracking/verify) |
| Sign-up and purchase reach GA4  | GA4 › Admin › DebugView                                                                         |
| Meta counts one purchase        | Events Manager › Test events, one event from browser and server                                 |
| Google Ads records a conversion | Goals › Conversions › the action's status. Allow a few hours                                    |
| The server side decided         | **Settings › Tracking &amp; Tags › Server-side conversions**, one row per sale, with a reason   |

If a step comes up empty, [Verify](/tracking/verify#when-something-is-wrong) lists the causes in the order they usually happen.

## Next

- [Events](/tracking/events) - which events map to which conversion.
- [Server-side conversions](/tracking/server-side) - the sale a browser never sees.
