Skip to content

Events show as pending and never send

What pending, retrying, failed and not forwarded mean in the delivery log, why a conversion can sit in pending, and when a retry helps.

article |4 min |Updated Sep 2026
On this page · 6 sections

A conversion sitting in pending has been queued for upload and the ad platform has not answered yet. Normally that lasts seconds. When it lasts hours, something between Convultra and the platform is stuck, and the Conversion delivery page in the sidebar tells you what.

The statuses

StatusMeaning
pendingQueued for upload. The platform has not responded.
retryingA temporary failure (throttle, unreachable platform). Convultra tries again automatically, up to 3 attempts in total.
success (shown as Delivered)The platform accepted the upload. Not the same as the platform attributing it to an ad.
failedThe platform refused it, or all 3 automatic attempts failed. The plain-English reason is shown.
not_forwardedNo attempt was ever made. Organic and direct conversions and micro events land here. It is not a failure.

Rows in the log are attempts, not conversions. One conversion sent to two platforms is two rows, and a retried conversion is one row per attempt. Use the summary counts, not the row count, to count conversions.

Why an event stays pending

The platform is rate limiting

Google Ads and other platforms throttle uploads. Convultra queues and retries automatically; the row moves to retrying and then to delivered. Bursts of conversions, such as a sale launch, can queue for a while. Nothing to do.

The connection is broken

If the platform revoked or expired the OAuth token, uploads cannot be made. Check the integration card under Integrations. Reconnect if it does not say Connected or Healthy. Attempts queued while the connection was broken retry once it is restored.

The platform is not accepting uploads yet

Meta, Microsoft Ads and TikTok conversion forwarding are coming soon. A Microsoft Ads connection syncs spend today but does not upload conversions. Google Ads and OpenAI Ads forwarding are live, so a conversion cannot be delivered to any other platform yet. For OpenAI Ads, forwarding also needs a Conversions API key; without one the card says Unavailable.

Monitoring mode is on

With monitoring mode on, nothing is forwarded and no attempts are created. You will see no rows rather than pending rows, and a banner on the Conversion delivery page says so. Switch it off in the banner at the top of Settings.

When pending becomes failed

Convultra gives up after 3 attempts, or when the platform returns a definitive refusal:

  • Click not recognized. The click ID is invalid or was captured from a test URL.
  • Outside the platform’s window. Google Ads and Microsoft Ads accept conversions up to 90 days after the click; Meta accepts 7 days. Past that, every retry fails.
  • Duplicate. The platform already has a conversion with that ID. Expected.
  • Permission. The API account cannot write conversions. For Google Ads, that is Basic Access. See Troubleshooting.

When a retry helps

Retry when the cause was a broken connection, a throttle or an unreachable platform and you have fixed the cause. Do not retry when the platform said the click was not recognized, the conversion is outside its window, or it already has the conversion.

On the Conversion delivery page, select rows and click Retry selected, or click Retry all failed. Rows that have used every automatic attempt are still eligible for a manual retry; rows outside the platform’s window are skipped and the page says why. The conversion’s own drawer on the Conversions page has a retry for a single conversion.

Through the API or MCP server, retry_delivery re-queues one failed attempt. It is not idempotent: each call queues one more attempt, so calling it twice sends twice. Pass the delivery attempt id from list_deliveries, not the conversion id. A conversion past the platform window returns 409 outside_retry_window. Queueing is not delivery, so check list_deliveries again a few minutes later.

Reading the summary

get_delivery_summary returns delivered, pending and failed counts, the delivery rate, the revenue sitting behind failed deliveries (value_at_risk, deduplicated by conversion), a per-platform breakdown and a daily failure count. A day where failures spike is usually the day a connection broke. If the response says partial: true, the range holds more rows than one scan covers and every figure under-reports; narrow the range.

What to send support

If a conversion has been pending for more than an hour and the integration is green, email support@convultra.com with the project domain, the conversion timestamp and the X-Request-Id from any API call you made.

Next in Delivery and errors Troubleshooting →