> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.omegatheme.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Omega Google Ads: Delivery status for Purchase events

## What is Delivery status?
* Delivery status shows what happened to each Purchase conversion after Omega recorded it from Shopify: whether it has been sent to Google Ads, is still on its way, was accepted, was not accepted, or is on hold because you reached your plan limit. Instead of wondering whether an order made it to Google Ads, you can check the status of every order in the **Purchase Events Table** on Home and open its **Conversion Journey** to see each step.
* One thing to keep in mind: **recording** an order and **delivering** it to Google Ads are two separate steps. Omega records every Purchase event from merchant's store. Delivery to Google Ads is a second step that can wait, be retried, or pause on its own.

![](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/image_jokhuz.png)

## The statuses
* Each order has exactly one current status.
| Status | What it means |
| ---- | ---- |
| **Captured** | Omega recorded the Purchase conversion from Shopify. It has not been sent yet. |
| **Processing** | Omega is preparing or sending the conversion to Google Ads. Google has not given a final answer yet. |
| **Delivered** | Google Ads accepted the conversion. |
| **Rejected** | Google Ads did not accept the conversion. Open the Conversion Journey to see why. |
| **Held** | Not sent to Google Ads because your plan limit for the month has been reached. |
| **Needs attention** | Omega could not verify the delivery status of this order. Reason: Orders were recorded before Delivery status was released or some information of the orders were missed. |

* Normal orders move through **Captured → Processing → Delivered** (or **Rejected**). **Held** only appears when you reach your plan limit, so most stores will never see it.

### Purchase Events Table
The table on Home lists the Purchase events Omega recorded this month. The existing search, sorting, and Source filter work as before, and the `utm_source`, `utm_medium` and `gad_source` columns are still there. New in the table:
* **Delivery status column.** A status badge with a short tooltip for each order.
* **Conversion Journey.** Open it from a row to see the steps for that order.
* **Delivery status filter.** Use **Add filter → Delivery status** and choose Captured, Held, Processing, Delivered, Rejected, or Needs attention. It combines with search and the Source filter.
* **Monthly summary in the subtitle**, for example *"20 delivered · 8 waiting ($5,894.42)"*. It always covers the **whole month**, no matter which page or filter you are viewing.
You can see all orders of the month, including Held ones, by paging through the table.

![](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/image_1dam121.png)
### Conversion Journey
Click the journey button on an order to see each step with its time:
* **Delivered:** Captured → Processing → Delivered.
* **Rejected:** Captured → Processing → Rejected, with the reason in plain language. Open **Technical details** for the Google error code and the request or job ID. Share this ID with support if you need help.
* **Processing:** Captured is done and Processing is active. Google has not given a final answer yet.
* **Captured:** Omega recorded the order and has not started sending it.
* **Held:** Captured → Held, with the time the order was held and the reason.
If Omega tries to send an order more than once, the table still shows one status. The journey lists the attempts in time order.

![Conversion Journey for Delivered status](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/image_1dy2od7.png)
![Conversion Journey for Rejected status](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/image_99b06m.png)
### If your store reaches the plan limit
* Each plan has a monthly limit on how many Purchase conversions Omega sends to Google Ads.
| Plan | Purchase conversions sent per month |
| ---- | ---- |
| Free | 20 |
| Starter | 100 |
| Professional | Unlimited |
| Enterprise | Unlimited |
* When you reach the limit, **Omega keeps recording your orders, but stops sending new Purchase conversions to Google Ads.** The orders after the limit get the **Held** status. Your tracking has not stopped, and nothing is lost: Held orders stay saved in Omega.
* You will see this in three places on Home:
1. **Banner at the top.** It says delivery of Purchase conversions to Google Ads is paused. It shows how many conversions were sent this month against your limit, the date delivery resets, how many conversions are waiting, and the total purchase value waiting. The value uses the amount and currency Omega recorded for your orders, with no conversion between currencies.
![](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/image_ec538u.png)
2. **Event Overview.** The Purchase count still shows **all** Purchase events recorded this month, not only the delivered ones. A **Delivery paused** badge appears next to it. Hover over it to read: *"Your orders delivery to Google Ads has paused as you've reached {used}/{limit} {plan} orders."*
![](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/image_eyuito.png)
3. **Purchase Events Table.** Held orders appear with the Held status.
The limit resets on the **1st of the next calendar month**. The banner shows the exact date.
![](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/image_c8kd1k.png)
###### Which plan does Omega recommend?
The banner and the Held journey suggest the lowest plan that covers your usage this month, counting both sent and Held conversions:
* Free with 21 to 100 conversions this month → **Starter**
* Free with more than 100 → **Professional**
* Starter with more than 100 → **Professional**
If you are eligible for a free trial, the button offers the **3-day free trial** of the recommended plan. If you are not eligible, the button takes you to the normal upgrade flow and no trial is promised.

###### What happens after you upgrade
After the upgrade is confirmed, Omega automatically sends the Held conversions **from the current month**. You do not need to do anything.
* **Upgrade to Starter (100 per month):** Omega sends Held orders only up to the remaining room under the new limit, starting with the **oldest** order. Example: you are on Free and sent 20 conversions in September, with 100 Held. You upgrade to Starter in September. Omega sends 80 more, and 20 stay Held.
* **Upgrade to Professional or Enterprise:** all Held conversions of the current month are sent.
* **Held orders from a previous month are not sent.** Each month's limit only covers that month's orders, and the new month's limit cannot be used to send last month's orders.
* If the payment fails, your plan does not change and nothing is sent.
If an order was Held for more than 7 days, the journey shows a notice that the **timing accuracy of the conversion may be reduced** when it is sent. It is still sent when you upgrade. The 7 days is not a deadline.

###### What happens after you downgrade
* Conversions already sent stay as they are. Nothing is taken back.
* Omega counts what you already sent this month against the new, lower limit. If room is left, Omega keeps sending until the limit is reached. If you are already at or over the new limit, the next Purchase is Held right away and the banner appears.

### Rejected status cases and how CS supports
Open the order's **Conversion Journey** > **Technical details** to see the Google error code and the **Request or job ID**. Find the code in the table below.
* Only a final error becomes **Rejected**. Temporary errors keep the order in **Processing** while Omega retries.
* A Rejected order has only two buttons: **Reconnect Google Ads** (login problem) or **Contact support** (everything else). So most Rejected cases reach CS through the support chat.
| Google error code | Status and button | What it means | How CS supports, step by step |
| ---- | ---- | ---- | ---- |
| `TOO_RECENT_CONVERSION_ACTION`, `TOO_RECENT_EVENT` | **Processing**, no button | Google does not accept the conversion yet. Either the conversion action was just created, or the click and order are too new for Google to import. This is normal right after setup or right after an order. | 1. Confirm the status is Processing.<br>2. Tell the customer there is nothing to fix: Omega waits at least 6 hours and sends again by itself.<br>3. Check again later. Most orders turn **Delivered** on their own. |
| `RESOURCE_EXHAUSTED` (quota), `DEADLINE_EXCEEDED`, `UNAVAILABLE`, `INTERNAL_ERROR`, `TRANSIENT_ERROR`, `ABORTED`, network timeout (no code) | **Processing**, no button | A temporary problem or rate limit on Google's side. For a timeout, Omega does not know if Google received the request. | 1. Tell the customer nothing needs fixing: Omega retries with an increasing wait time.<br>2. For a timeout, add that Omega checks for duplicates first, so the order is never counted twice.<br>3. Do **not** ask the customer to upgrade the Omega plan. Google quota has nothing to do with the Omega plan limit.<br>4. If the order stays Processing much longer than expected, escalate to dev with the Request or job ID. |
| `CLICK_CONVERSION_ALREADY_EXISTS`, `ORDER_ID_ALREADY_IN_USE`, `DUPLICATE_ORDER_ID` (same order, same account, same action); warnings | **Delivered** (shown as **Already recorded**, or Delivered with a warning), no button | Google already has this conversion, or it accepted the conversion and added a diagnostic note. Nothing failed. | 1. Tell the customer Google already recorded this conversion, so Omega does not send it again.<br>2. Do not ask the customer to change the order ID to get around the duplicate check.<br>3. If the order ID exists but the **account or conversion action does not match**, the order is not marked Delivered. It shows **Unknown Google error**: handle it as Unknown Google error (last row of this table). |
| `UNAUTHENTICATED`, OAuth token revoked or expired | **Rejected**, button **Reconnect Google Ads** | The Google Ads connection is no longer valid. The customer may have removed Omega's access, changed the Google password, or the login expired and could not be refreshed. Omega cannot send anything until it is renewed. | 1. Ask the customer to click **Reconnect Google Ads** and sign in with the Google account that has access to the Google Ads account.<br>2. If the app asks, select the correct Google Ads account again.<br>3. Check that the connection shows as connected.<br>4. Escalate the affected Rejected order names to dev (There is no manual retry button for Rejected orders, so escalate the affected order names to dev).<br>5. If reconnecting fails or the error comes back right away, escalate with the Request or job ID. |
| `UNAUTHORIZED_CUSTOMER`, `PERMISSION_DENIED`, `USER_PERMISSION_DENIED` | **Rejected**, button **Contact support** | The connected Google login, or the manager (MCC) account, has no permission on the Google Ads account that owns the click or the conversion action. | 1. Ask which Google login is connected and which Google Ads account should receive the conversions.<br>2. Ask the customer to check that this login has access to that account (and to the manager account if they use one). If not, the account admin grants access in Google Ads.<br>3. After access is fixed, ask the customer to reconnect Google Ads with the right login.<br>4. Do not promise a retry before access changes: Omega does not retry until permissions change.<br>5. Escalate the order names to dev. If access is correct but the error stays, add the Request or job ID and the connected account. |
| `INVALID_CUSTOMER_FOR_CLICK` | **Rejected**, button **Contact support** | The ad click belongs to a different Google Ads account than the one Omega uploads to. Typical case: ads run in one account but the app is connected to another account or a manager account. | 1. Ask which Google Ads account actually runs the ads that bring these orders.<br>2. Check that this is the connected account, and that it owns the conversion action Omega uses.<br>3. If the connected account is wrong, ask the customer to reconnect Google Ads with the correct one, then escalate the order names to dev.<br>4. If the account is correct or ads run in several accounts, escalate with the Request or job ID. |
| `NO_CONVERSION_ACTION_FOUND` | **Rejected**, button **Contact support** | The conversion action Omega sends to does not exist any more, is disabled or removed, or belongs to another account. | 1. Ask the customer to check in Google Ads that the conversion action exists, is enabled and belongs to the connected account.<br>2. Ask whether they deleted or changed it recently.<br>3. Ask the customer not to delete or recreate anything yet.<br>4. Escalate to dev with the Request or job ID and the action name the customer sees in Google Ads. Dev confirms which action to use or recreate. |
| `INVALID_CONVERSION_ACTION_TYPE` | **Rejected**, button **Contact support** | The conversion action does not support imported click conversions, so Google refuses uploads to it. | 1. Ask which conversion action is used for Purchase, and whether they changed its type in Google Ads.<br>2. Explain that the action must support imported click conversions.<br>3. Escalate to dev with the Request or job ID and the action name, so the right action is chosen or created. |
| `ONE_PER_CLICK_CONVERSION_ACTION_NOT_PERMITTED_WITH_BRAID` | **Rejected**, button **Contact support** | The action's counting setting is **One** (one conversion per click). That does not work with this order's click ID type, GBRAID or WBRAID, which comes from some iOS and web-to-app traffic. | 1. Ask whether the customer changed the counting setting of the conversion action in Google Ads.<br>2. Explain that the counting setting must be compatible with this click ID type, or a compatible action must be used.<br>3. Do not guess which setting to change. Escalate to dev with the Request or job ID and the action name. |
| `CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS` | **Rejected**, button **Contact support** | The Google Ads account has not accepted Google's **Customer Data Terms**, which Enhanced Conversions need. Google refuses conversions with customer data until the terms are accepted. | 1. Tell the customer the account must accept the Customer Data Terms inside Google Ads. The customer or the account admin does this.<br>2. Wait for the customer to confirm.<br>3. Escalate the affected order names to dev so they can be retried. Omega does not retry before the terms are accepted. |
| `CUSTOMER_DATA_POLICY_PROHIBITS_ENHANCED_CONVERSIONS` | **Rejected**, button **Contact support** | Google policy does not allow Enhanced Conversions for this account. The customer cannot change this on their side. | 1. Tell the customer Enhanced Conversions are not available for this Google Ads account because of Google's policy.<br>2. Do not promise a fix or a date.<br>3. Escalate to dev with the store domain, the Google Ads account and the Request or job ID. Dev decides if a fallback without customer data is allowed. |
| `UNPARSEABLE_GCLID`, `UNPARSEABLE_GBRAID`, `UNPARSEABLE_WBRAID` | **Rejected**, button **Contact support** (**Invalid conversion data**) | The Google click ID saved with the order is broken, cut off or cannot be decoded, so Google cannot verify the ad click. Omega does not retry the same click ID. | 1. Note which ID type it is (GCLID, GBRAID or WBRAID).<br>2. Tell the customer Google could not verify the ad click for this order. One-off cases are normal.<br>3. Check how many recent orders show the same code in the Purchase Events table.<br>4. If many orders show it, escalate: click ID capture may be failing. Send examples and the Request or job ID. |
| `CLICK_NOT_FOUND`, `EVENT_NOT_FOUND` | **Rejected**, button **Contact support** | Google has no ad click that matches this conversion. The order may not come from Google Ads, or the click ID or the Google Ads account is wrong. | 1. Tell the customer Google did not find a matching ad interaction for this order. Some orders have none: that is normal.<br>2. Do not retry blindly and do not ask the customer to resend.<br>3. Check that the connected account is the one that runs the ads.<br>4. If the rate is high or it looks like a wrong account, escalate with examples and the Request or job ID. |
| `CONVERSION_PRECEDES_EVENT` | **Rejected**, button **Contact support** (**Invalid conversion data**) | The conversion time is earlier than the click time, so Google rejects it. The usual cause is the timestamp source or a timezone issue. | 1. Tell the customer Omega is checking the order data. Omega retries only if it can correct the time reliably. It never invents a time.<br>2. If the order stays Rejected, escalate to dev with the order name, the order time and the Request or job ID. |
| `EXPIRED_EVENT` | **Rejected** (**Outside Google attribution window**) | The click is older than the conversion window of the conversion action, so Google cannot count it. | 1. Tell the customer the click is outside Google's conversion window. Nothing can be done for this order and Omega does not retry.<br>2. If the customer asks about the window, point them to the conversion window setting of the action in Google Ads.<br>3. If many recent orders show it, escalate: the window may be too short. |
| `CONVERSION_TRACKING_NOT_ENABLED_AT_IMPRESSION_TIME` | **Rejected** (**Outside Google attribution window**) | Conversion tracking was not turned on when the ad was shown or clicked, so Google cannot attribute this conversion. | 1. Tell the customer nothing can be done for this order and Omega does not retry.<br>2. Check with the customer that conversion tracking is on and set up correctly now.<br>3. Look at newer orders. If they show the same error, escalate. |
| `ORDER_ID_CONTAINS_PII`, `TOO_MANY_CONVERSIONS_IN_REQUEST`, `INVALID_USER_IDENTIFIER`, `UNSUPPORTED_USER_IDENTIFIER` | **Omega fixes it**, no customer action | The order ID looks like personal data to Google; or the batch was larger than Google allows; or the customer's email or phone was not formatted or hashed in a supported way. | 1. Tell the customer nothing is needed: Omega creates a safe order ID, splits the batch, or normalizes the data, then sends again without creating a duplicate.<br>2. If the order still ends **Rejected**, the button is **Contact support**: escalate with the Request or job ID. |
| `INVALID_ARGUMENT`, `INVALID_INPUT`, `REQUIRED_FIELD_MISSING`, `FAILED_PRECONDITION` | **Omega fixes it**, or **Rejected** with **Contact support** | The request data or a setting is wrong. The error field decides if it is an Omega bug or a merchant setting. | 1. Omega does not resend the same data.<br>2. If the order ends Rejected, escalate to dev with the Request or job ID and the field shown in Technical details. |
| `UNKNOWN`, `UNSPECIFIED`, a new code Omega does not know, a duplicate order ID that does not match the account or action, or `RETRY_EXHAUSTED` (all retries used) | **Rejected**, button **Contact support** (**Unknown Google error**) | Omega cannot classify the error. It retries only a few times, then marks the order Rejected and alerts dev. | 1. Tell the customer Omega has not identified the error yet and support is checking.<br>2. Do not ask the customer to change anything.<br>3. Copy the Google error code (if any) and the **Request ID** from Technical details.<br>4. Escalate to dev with that information. |
**Batches.** Omega sends orders in batches. Each order gets its **own** status, so one Rejected order does not mean the others failed. If a result cannot be matched to an order, that order goes to review (**Unknown Google error**) and is never marked Delivered by guess.
**Before escalating to dev, collect:**
* Store domain and order name.
* Status and the last step in the journey.
* The Google error code and the **Request or job ID** from Technical details.
* The connected Google Ads account and the conversion action.
* What the customer already tried (reconnect, change action, accept data terms).
Technical details never show tokens, hashed customer data or full click IDs.
**After the customer fixes something:** there is no manual retry button for Rejected orders. CS escalates to dev with the order names and what was fixed.

### Needs attention
Orders recorded before this feature, or orders missing status information, show **Needs attention** instead of a status. Omega does not guess a time or a result. The expanded view explains that Omega has not verified the delivery to Google Ads and offers **Contact support**.

## FAQ
1. **Does Omega stop tracking when I reach my plan limit?** No. Omega keeps recording all Purchase events. Only the sending of new Purchase conversions to Google Ads pauses.
2. **Why is the Purchase count in Event Overview higher than the number of delivered conversions?** The Purchase count is the total recorded this month. Delivered is only what Google Ads accepted.
3. **Do Rejected orders use up my monthly limit?** Yes. An order uses one slot once Omega starts sending it, whether the result is Delivered or Rejected. Retries of the same order do not use another slot, and Held orders do not use a slot because they were never sent.
4. **An order has no Google click ID. Will it be Held?** No. Held is only used for the plan limit. Such an order is still sent and ends as Delivered or Rejected.
5. **Will Held orders be sent when the new month starts?** No. They stay Held. Upgrading during the month they were recorded is how they get sent.
6. **Who do I contact for help?** Use Contact support in the Held journey, in a Rejected order, or in a Needs attention row. It opens the support chat with your store, order, plan and limit already filled in. No sensitive data is included.