<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Paulo Henrique</title>
    <description>The latest articles on DEV Community by Paulo Henrique (@pauloph02).</description>
    <link>https://dev.to/pauloph02</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4243025%2Fdef85eaa-6cc8-4bf0-9d8c-b3b2c0bc36b3.png</url>
      <title>DEV Community: Paulo Henrique</title>
      <link>https://dev.to/pauloph02</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pauloph02"/>
    <language>en</language>
    <item>
      <title>WooCommerce to Zapier Not Triggering? Check These 5 Things</title>
      <dc:creator>Paulo Henrique</dc:creator>
      <pubDate>Fri, 13 Nov 2026 16:44:38 +0000</pubDate>
      <link>https://dev.to/pauloph02/woocommerce-to-zapier-not-triggering-check-these-5-things-2af7</link>
      <guid>https://dev.to/pauloph02/woocommerce-to-zapier-not-triggering-check-these-5-things-2af7</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: I'm building Webhook Disable Monitor, a free WooCommerce plugin in pre-release (not published, nothing for sale). It is only relevant to check #1 and I mention it there. The other four checks have nothing to do with it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You placed an order, the Zap didn't run, and Zapier says it received nothing. Below are five things worth checking, all documented by WooCommerce or the Zapier extension. Checks 1, 2 and 5 are done in your WordPress admin. Checks 3 and 4 (the live event test and the trigger rule) are done &lt;strong&gt;in Zapier&lt;/strong&gt;, in the Zap's trigger step and its settings. They won't cover every possible cause, but they are a good place to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  First: which setup do you have?
&lt;/h2&gt;

&lt;p&gt;There are two ways covered here to send WooCommerce data to Zapier, and both use WooCommerce's built-in webhook system underneath:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A. The official "Zapier Integration for WooCommerce" extension&lt;/strong&gt; (a paid extension sold on WooCommerce.com). According to its &lt;a href="https://woocommerce.com/document/woocommerce-zapier-integration/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;, it "creates a webhook in WooCommerce" named &lt;strong&gt;WooCommerce Zapier&lt;/strong&gt; for each Zap that uses a WooCommerce trigger. The webhook is created when you turn the Zap on and deleted when you turn it off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;B. A webhook you created yourself&lt;/strong&gt; under &lt;strong&gt;WooCommerce › Settings › Advanced › Webhooks&lt;/strong&gt;, pointing at a Zapier "Catch Hook" URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Checks 1, 3 and 5 apply to both. Checks 2 and 4 refer to the official extension's documentation, but the queue in check 2 is core WooCommerce behaviour, so it matters for setup B too.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Is the webhook still there, and is it Active?
&lt;/h2&gt;

&lt;p&gt;Open &lt;strong&gt;WooCommerce › Settings › Advanced › Webhooks&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disabled after repeated failures
&lt;/h3&gt;

&lt;p&gt;WooCommerce disables a webhook on its own after repeated &lt;strong&gt;consecutive&lt;/strong&gt; failed deliveries. The &lt;a href="https://woocommerce.com/document/webhooks/" rel="noopener noreferrer"&gt;core docs&lt;/a&gt; say "more than five". With the default limit of 5, the code flips the status on the 7th consecutive failure, because it compares the counter before adding the new failure (&lt;a href="https://github.com/woocommerce/woocommerce/blob/11.3.0/plugins/woocommerce/includes/class-wc-webhook.php#L626-L640" rel="noopener noreferrer"&gt;class-wc-webhook.php, lines 626-640&lt;/a&gt;). In the code, a failure is any response outside 200–302 (the docs list 2xx, 301 and 302, and the code also accepts 300), a timeout of 60 seconds, or a connection error.&lt;/p&gt;

&lt;p&gt;The Zapier extension docs put it more simply: "If WooCommerce encounters an error when sending data to Zapier, it will automatically disable the webhook, which stops future data from being sent to that Zap." Their fix: edit each disabled &lt;strong&gt;WooCommerce Zapier&lt;/strong&gt; webhook and set it back to &lt;strong&gt;Active&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Three things to know before you click Active:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WooCommerce &lt;strong&gt;does not email you&lt;/strong&gt; when it disables a webhook. It just changes the status.&lt;/li&gt;
&lt;li&gt;Events that happened while it was disabled are &lt;strong&gt;not resent&lt;/strong&gt;. The Zapier extension docs point to "Transferring Existing Data Using a Zap" for back-filling.&lt;/li&gt;
&lt;li&gt;A reactivated webhook can be &lt;strong&gt;disabled again after a single failure&lt;/strong&gt;, because its failure counter is not reset (&lt;a href="https://github.com/woocommerce/woocommerce/issues/70247" rel="noopener noreferrer"&gt;open issue #70247&lt;/a&gt;). Fix the cause first (see check 5), then reactivate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to know the next time this happens instead of discovering it days later, that's the problem I'm building &lt;strong&gt;Webhook Disable Monitor&lt;/strong&gt; for. It records each time WooCommerce disables a webhook and attempts one admin notification per episode. It doesn't reactivate webhooks, resend data, or fix cron, DNS or permission problems. It's a pre-release, not downloadable yet: &lt;a href="https://webhook-disable-monitor.phbibi-paulo.workers.dev/pre-release" rel="noopener noreferrer"&gt;pre-release details&lt;/a&gt;. Developers can also hook into WooCommerce's &lt;code&gt;woocommerce_webhook_disabled_due_delivery_failures&lt;/code&gt; action themselves. If you do, test it on staging first.&lt;/p&gt;

&lt;h3&gt;
  
  
  Missing because the Zap was turned off (or cloned to staging)
&lt;/h3&gt;

&lt;p&gt;With the official extension, "When a Zap is disabled, either because of a problem occurring or manually, the corresponding WooCommerce webhook will be removed." Zapier can also turn a Zap off by itself: the extension docs note that "If repeated errors occur, then the corresponding Zap is also disabled." The documented fix is to turn the Zap off and on again in Zapier, which recreates the webhook.&lt;/p&gt;

&lt;p&gt;If you &lt;strong&gt;cloned production to staging&lt;/strong&gt;, the docs warn that the webhook is cloned too, so "production and staging will both trigger your production Zap" until you delete the webhooks on staging. The reverse also happens: after a migration or a URL change, the webhook may point at the wrong place.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Is the background queue (Action Scheduler / WP-Cron) running?
&lt;/h2&gt;

&lt;p&gt;WooCommerce doesn't deliver webhooks while the customer's checkout is loading. It schedules a background action called &lt;code&gt;woocommerce_deliver_webhook_async&lt;/code&gt; (&lt;a href="https://github.com/woocommerce/woocommerce/blob/11.3.0/plugins/woocommerce/includes/wc-webhook-functions.php#L26-L37" rel="noopener noreferrer"&gt;source&lt;/a&gt;). The Zapier extension docs say a "typical delay is between ten seconds and one minute, but the delay can be much longer in a staging/testing/development environment or sites with extremely low traffic", because Action Scheduler depends on WP-Cron.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pending woocommerce_deliver_webhook_async actions
&lt;/h3&gt;

&lt;p&gt;Go to &lt;strong&gt;WooCommerce › Status › Scheduled Actions&lt;/strong&gt;, filter by &lt;strong&gt;Pending&lt;/strong&gt;, and search for &lt;code&gt;woocommerce_deliver_webhook_async&lt;/code&gt;. According to the docs, pending entries mean "data is queued to be sent to Zapier, but hasn't been sent yet". You can click &lt;strong&gt;Run&lt;/strong&gt; on one to send it now. If they keep piling up, your cron isn't running. The extension docs list WP-Cron "Running and operational" as a requirement and recommend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a test with the WP Crontrol plugin (look for "Next Run" times in the past);&lt;/li&gt;
&lt;li&gt;or a real server cron job.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also check the &lt;strong&gt;Failed&lt;/strong&gt; filter. The docs say there's "no option to resend a failed task", and that timeouts there often mean PHP's &lt;code&gt;max_execution_time&lt;/code&gt; is too low (they suggest at least 120 seconds).&lt;/p&gt;

&lt;h3&gt;
  
  
  The ALTERNATE_WP_CRON known issue
&lt;/h3&gt;

&lt;p&gt;If Zapier shows &lt;code&gt;rest_api_unavailable&lt;/code&gt; / "The Rest API is unavailable", the extension docs describe a known WooCommerce core issue that "only occurs when you use WordPress' &lt;code&gt;ALTERNATE_WP_CRON&lt;/code&gt; feature". Their workaround is to remove that constant from &lt;code&gt;wp-config.php&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Are you testing with a fresh, live event?
&lt;/h2&gt;

&lt;p&gt;In a &lt;a href="https://wordpress.org/support/topic/webhook-problems-used-in-zapier/" rel="noopener noreferrer"&gt;WordPress.org support thread&lt;/a&gt; from April 2026, a store owner tested a Catch Raw Hook in Zapier and got "no data". The replies explained that Zapier's test listens for &lt;strong&gt;new&lt;/strong&gt; requests, and that WooCommerce sends a webhook once, when the event happens. It doesn't resend old events. The code agrees: nothing is queued for a webhook that isn't active, and there's no replay.&lt;/p&gt;

&lt;p&gt;The reliable way to test:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In Zapier, open the trigger step and start &lt;strong&gt;Test trigger&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Then&lt;/em&gt; create a new event in WooCommerce, for example a test order with a test payment method.&lt;/li&gt;
&lt;li&gt;Check that Zapier received it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Also note that the first time you save an Active webhook, WooCommerce sends a &lt;strong&gt;ping&lt;/strong&gt; to the delivery URL (&lt;a href="https://woocommerce.com/document/webhooks/" rel="noopener noreferrer"&gt;core docs&lt;/a&gt;). That ping isn't an order, so don't map fields from it.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Does the trigger rule match what actually happens in your store?
&lt;/h2&gt;

&lt;p&gt;This check happens &lt;strong&gt;in Zapier&lt;/strong&gt;: open the Zap's WooCommerce trigger step and look at which trigger rule is selected. The trigger may be working perfectly and simply never matching your orders. One example the extension docs describe in detail is &lt;strong&gt;Order paid&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The "Order paid" trigger "will not fire for offline (deferred) payment methods such as Direct Bank Transfer (BACS), Check/Cheque, or Cash on Delivery (COD)."&lt;/li&gt;
&lt;li&gt;The docs suggest using &lt;strong&gt;Order created&lt;/strong&gt; (fires for paid and unpaid orders) or an &lt;strong&gt;Order status changed to…&lt;/strong&gt; rule instead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also check that the trigger's &lt;strong&gt;topic&lt;/strong&gt; matches the action you're performing. An &lt;code&gt;order.created&lt;/code&gt; webhook won't fire when you edit an existing order.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. What does the delivery log say?
&lt;/h2&gt;

&lt;p&gt;Go to &lt;strong&gt;WooCommerce › Status › Logs&lt;/strong&gt; and filter by the &lt;strong&gt;webhooks-delivery&lt;/strong&gt; source (&lt;a href="https://woocommerce.com/document/webhooks/" rel="noopener noreferrer"&gt;core docs&lt;/a&gt;). Each entry shows the webhook ID, topic, duration and the &lt;strong&gt;response code/message&lt;/strong&gt; from Zapier. Bodies are only logged when &lt;code&gt;WP_DEBUG&lt;/code&gt; is on.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2xx&lt;/strong&gt; response but the Zap didn't run: the data reached Zapier, so look at the Zap itself (filters, task history, halted tasks).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4xx/5xx&lt;/strong&gt;: the delivery failed. Repeated failures lead to check #1.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No entry at all&lt;/strong&gt;: the event may not have been delivered yet, or at all. Go back to checks 1, 2 and 4. But a missing entry is not proof on its own: logging may be disabled or limited on your site (for example by WooCommerce's logging settings or a log retention clean-up), or the entry may be in a different log file or date. Cross-check with &lt;strong&gt;Scheduled Actions&lt;/strong&gt; (check 2).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  http_request_failed and timeouts
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;http_request_failed&lt;/code&gt; means your server never got a valid HTTP response. In &lt;a href="https://github.com/woocommerce/woocommerce/issues/59381" rel="noopener noreferrer"&gt;issue #59381&lt;/a&gt;, users report this happening intermittently, surrounded by successful deliveries. That's a user report, and there's no public data on how common it is. Commenters there linked it to the WordPress HTTP layer and possible DNS problems on the store's server. The Zapier extension docs suggest checking server load and Zapier's status page. WooCommerce gives each delivery &lt;strong&gt;60 seconds&lt;/strong&gt; before it counts as a failure.&lt;/p&gt;

&lt;h3&gt;
  
  
  The WordPress user behind the webhook
&lt;/h3&gt;

&lt;p&gt;With the official extension, the docs say webhooks "are tied to the WordPress user that created them". If that user is &lt;strong&gt;deleted&lt;/strong&gt; or their role is &lt;strong&gt;downgraded&lt;/strong&gt;, the webhooks stop working, and Zapier shows &lt;code&gt;woocommerce_rest_cannot_view&lt;/code&gt;. The documented fix:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;reconnect the WooCommerce account in Zapier;&lt;/li&gt;
&lt;li&gt;turn each Zap off and on to recreate its webhook.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A related point: the extension &lt;strong&gt;revokes its REST API key after 30 days without use&lt;/strong&gt;, which the docs call normal. Zaps that only use WooCommerce &lt;em&gt;triggers&lt;/em&gt; keep working without it, so this explains "reconnect" prompts. It doesn't explain a trigger that stopped.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick checklist
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Webhook present and &lt;strong&gt;Active&lt;/strong&gt;? (Settings › Advanced › Webhooks)&lt;/li&gt;
&lt;li&gt;No pile-up of &lt;strong&gt;Pending&lt;/strong&gt; &lt;code&gt;woocommerce_deliver_webhook_async&lt;/code&gt; actions? Cron running?&lt;/li&gt;
&lt;li&gt;Tested with a &lt;strong&gt;new&lt;/strong&gt; event while Zapier was listening?&lt;/li&gt;
&lt;li&gt;Trigger rule matches the store's real behaviour (for example &lt;strong&gt;Order paid&lt;/strong&gt; and offline payments)?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;webhooks-delivery&lt;/strong&gt; log shows a 2xx for that event?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Zapier Integration for WooCommerce docs: &lt;a href="https://woocommerce.com/document/woocommerce-zapier-integration/" rel="noopener noreferrer"&gt;https://woocommerce.com/document/woocommerce-zapier-integration/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;WooCommerce Webhooks docs: &lt;a href="https://woocommerce.com/document/webhooks/" rel="noopener noreferrer"&gt;https://woocommerce.com/document/webhooks/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;wc-webhook-functions.php&lt;/code&gt; (11.3.0): &lt;a href="https://github.com/woocommerce/woocommerce/blob/11.3.0/plugins/woocommerce/includes/wc-webhook-functions.php" rel="noopener noreferrer"&gt;https://github.com/woocommerce/woocommerce/blob/11.3.0/plugins/woocommerce/includes/wc-webhook-functions.php&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;class-wc-webhook.php&lt;/code&gt; (11.3.0): &lt;a href="https://github.com/woocommerce/woocommerce/blob/11.3.0/plugins/woocommerce/includes/class-wc-webhook.php" rel="noopener noreferrer"&gt;https://github.com/woocommerce/woocommerce/blob/11.3.0/plugins/woocommerce/includes/class-wc-webhook.php&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;WordPress.org support thread: &lt;a href="https://wordpress.org/support/topic/webhook-problems-used-in-zapier/" rel="noopener noreferrer"&gt;https://wordpress.org/support/topic/webhook-problems-used-in-zapier/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Issue #59381: &lt;a href="https://github.com/woocommerce/woocommerce/issues/59381" rel="noopener noreferrer"&gt;https://github.com/woocommerce/woocommerce/issues/59381&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Issue #70247: &lt;a href="https://github.com/woocommerce/woocommerce/issues/70247" rel="noopener noreferrer"&gt;https://github.com/woocommerce/woocommerce/issues/70247&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Sources checked on 13 November 2026. Not affiliated with or endorsed by WooCommerce, Automattic or Zapier.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>woocommerce</category>
      <category>zapier</category>
      <category>wordpress</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
