Rutba CRM

WooCommerce

Send WooCommerce orders, customers and products to Rutba CRM with four webhooks, then import your past orders.

Connect a WooCommerce store on WordPress so that every order creates or updates the customer's contact, shows on their record, counts in your sales reports and can carry its campaign. Nothing is installed on the store: you add four webhooks in WooCommerce's own settings.

On WordPress, the WordPress plugin does all of this at once, with one code: it makes the four webhooks and turns them back on every day, adds a WhatsApp consent box at checkout and links each order to the visits that led to it. If you connected the store by hand first, the plugin takes over that connection and gives it its own secret, so remove your hand-made webhooks. Follow this page only to connect a store by hand. Past orders are imported the same way in both cases, as described below.

Before you start

  • Who can do it: owners and administrators of the company.
  • Plan: available when your plan includes Store connections. The number of active store connections is a plan limit.
  • A pipeline: the connection asks for a stage. If the company has no pipeline yet, create one first under Deals, then Sales pipelines. See Deals and pipelines.
  • Access to WordPress: a WordPress user who can open WooCommerce → Settings → Advanced.
  • A public HTTPS store. WooCommerce sends webhooks from your web server, so the server must be able to reach https://rutbacrm.com over HTTPS.

Step 1: create the connection

  1. In the sidebar open Products, then click Store connections. If your plan has store connections but not products, Products opens Store connections directly.
  2. Under Connect a store, fill in the form:
Field What to enter
Store name A name your team will recognise, up to 120 characters
Store platform WooCommerce (WordPress)
Store currency The currency of the store's prices. It is used for products; each order keeps its own currency
Webhook key from Shopify or Salla Leave it empty
New quote requests start in Any stage. WooCommerce does not send quote requests, so this is only kept for later
Assign new deals to Optional. New contacts created by the store are given to this person
  1. Click Connect a store.
  2. A box titled Signing secret appears. Copy the secret now and keep it somewhere safe: it is shown only once.
  3. In the new store card, copy the address in Address for your store. This is the delivery URL.

Step 2: add four webhooks in WooCommerce

In WordPress open WooCommerce → Settings → Advanced → Webhooks, click Add webhook, and create four webhooks with the same values except the topic:

WooCommerce field Value
Name Anything, for example the topic name
Status Active
Topic One per webhook: Order created, Order updated, Product created, Product updated
Delivery URL The address copied from Address for your store
Secret The signing secret from step 1
API Version WP REST API Integration v3

When you save a webhook, WooCommerce sends a short test call. Rutba CRM answers it without changing anything, so the webhook stays active.

Step 3: turn on order attribution

For orders to carry their campaign, WooCommerce must record where the customer came from. In WordPress open WooCommerce → Settings → Advanced → Features and turn on Order Attribution. Rutba CRM then reads the utm_source, utm_medium and utm_campaign that WooCommerce saves with each order.

Your ad links must carry utm_campaign for a campaign to appear by name. Without it the order appears under its source, or under No campaign. For Google Ads, see Google Ads.

Step 4: test it

  1. Open your store with a link such as https://YOUR_STORE/?utm_source=test&utm_medium=test&utm_campaign=crm-test.
  2. Place a test order, ideally with cash on delivery or your payment gateway's test mode.
  3. In Rutba CRM, open Contacts and find the customer. The order is listed on their record.
  4. Open Store connections. The card shows Last event: with the time of the order.
  5. Change the order's status to Cancelled in WooCommerce. Open Reports: the order no longer counts in sales.
  6. Check that the campaign crm-test appears in Reports under Sales by campaign.

What is sent, and what is not

Arrives Does not arrive
New orders and every status change Orders placed before the connection, until you import them (below)
The customer's name, email, phone and company from the billing details Passwords and card details
Order lines: SKU, name, quantity and line total Stock levels
Products when they are created or edited Customers who register without placing an order
The order's source, medium and campaign Ad costs. Add them in Google Ads or by hand

How orders are matched and counted

  • Customer matching: the email decides first. If no contact has that email, the phone is tried, but only against a contact that has no other email, so two people sharing a phone are not merged. Archived contacts are not matched. The name, email and phone of an existing contact are never overwritten.
  • Phone numbers: a local number is turned into international form using the billing country, for Saudi Arabia, the UAE, Kuwait, Qatar, Bahrain, Oman, Egypt, Jordan and Turkey. A store order from 0501234567 then meets the same person's WhatsApp conversation.
  • Sales: orders with the status processing, completed, paid or delivered count as sales. A cash on delivery order therefore counts from processing. Cancelled, refunded and failed orders do not count. A partial refund does not reduce the total.
  • New contacts start as leads. The first order that counts as a sale makes the contact a customer.
  • Repeats are safe: WooCommerce can send the same update twice. An update older than the one already saved, or identical to it, is ignored.
  • Statuses from gateways (for example a status added by an instalment provider) are saved as they are, and count as a sale only once the order reaches one of the statuses above.
  • Drafts saved by the checkout before the customer finishes are ignored.

Import past orders and products

The webhooks only send what happens from now on. To bring in what came before:

  1. In WordPress open WooCommerce → Settings → Advanced → REST API, click Add key, and choose Read permissions only.
  2. In Rutba CRM, on the store card, open Import past orders and products.
  3. Enter Store address (the public https:// address, with no port), Consumer key and Consumer secret, then click Save keys. The keys are stored encrypted and never shown again. Type them yourself; never send them in a chat or email.
  4. Optionally choose Orders since (empty for all), then click Start import.

The import runs in the background, products first and then orders, at up to about 500 records a minute. Its progress shows on the card, for example Running: 120 imported, 2 refused. Running it again adds nothing twice. Imported orders do not start automations, reminders or webhooks, and they do not change Last event:. Only published products are imported.

Good to know

  • Unfinished checkouts: if you use WhatsApp reminders for unpaid orders, set them up under Home, then Alerts and automations. Add a consent checkbox to your checkout and enter its field name, for example whatsapp_opt_in, in Order field that holds WhatsApp consent. The WordPress plugin adds this box and fills in the field name for you. The consent is read on every order, paid at once or not. In WooCommerce, under Settings → Products → Inventory, leave Hold stock (minutes) empty; otherwise WooCommerce cancels unpaid orders after that time and the payment link stops working. See Alerts and digests.
  • Privacy: customers' names, emails and phones move into Rutba CRM. Say so in your store's privacy policy before you go live.
  • Turning a connection off stops it from accepting events; WooCommerce's deliveries then fail. Turn it on again with Turn on.

Troubleshooting

What you see What to do
No events received yet. after a test order Check that the webhook status in WooCommerce is Active and the delivery URL is exactly the copied address. Your server must reach https://rutbacrm.com over HTTPS
Events refused: with a number Events that could not be saved. Most often the order had a currency other than USD, EUR, GBP, TRY, SAR or AED, or no email and no phone. Events that arrive while your plan does not include Store connections are counted here too. They are answered as received so WooCommerce keeps the webhook on, but nothing is saved
WooCommerce shows a webhook as Disabled WooCommerce disables a webhook after five failed deliveries in a row, for example during an outage. Set it back to Active after any interruption. With the WordPress plugin, click Check the store connection; the plugin also turns its webhooks back on once a day
Deliveries fail after Replace the secret The new secret must be pasted into all four webhooks. Until then they are refused
The store refused the keys. Create a new read-only key. Some hosts strip the authorisation header from API calls; ask your host to allow it
The store API was not found. Check the store address, and that the WordPress REST API is reachable at /wp-json
Orders arrive with No campaign Turn on Order Attribution and make sure your ad links carry utm_campaign

Last updated 2026-11-08