Systems Architecture · Behind the Scenes

How a Rural King order actually works.

Every order you place moves through seven systems before it reaches your door — and a retention loop that keeps your animals covered month after month. Here's the full pipeline: OMS, Ordergroove, PIM, Middleware, Vet Portal, Iterable, and Salesforce Service Cloud.

OMS Ordergroove PIM Middleware Vet Portal Iterable SFSC
0 Systems in Pipeline
0 Stages of Lifecycle
0 Rx Verified
Signature Interactive

How does an order flow through the pipeline?

Orders move through five stages: Order Placed, Pharmacy Review, Packed, Shipped, and Delivered. Each stage is owned by a different system, and every state change fires an event to the systems that need to know. Click any stage to see the data flow behind it.

The Order Lifecycle

Click any stage to see what happens behind the scenes — which system owns it, what data moves, and what you see.

Stage 01 of 05

Order Placed

You pick a product, choose your quantity, and check out. The cart posts to the OMS with a unique order ID. Inventory is soft-reserved, your payment method is authorized, and a confirmation event fires to the retention layer.

AutoShip orders skip this stage entirely — they're generated on schedule by Ordergroove, which fires an event to the OMS that creates the order automatically.

Owning system
OMS · Order Management
Data written
order_idcustomer_idline_items[]totalautoShip
What you see
Confirmation email. Order number. Link to the tracking page.
Downstream event
order.placed → SFSC case + Iterable trigger
Systems Map

What systems power a Rural King Pet Pharmacy order?

Seven systems power every Rural King Pet Pharmacy order. The OMS is the hub every order routes through. Ordergroove manages AutoShip subscriptions. PIM supplies product data. Middleware routes events between systems. The Vet Portal verifies every prescription. Iterable fires retention messages. Salesforce Service Cloud handles customer service interactions.

Hub · Central System

OMS — Order Management

The central system. Every order passes through it, every event gets logged there, and every downstream system reads from it. Single source of truth for the entire pipeline.

  • Order creation & state machine
  • Inventory reservation
  • Event log for every stage
  • AutoShip order generation
Retention Engine

Ordergroove

Subscription engine. Runs every AutoShip loop — cadence, skip/delay logic, cancel-save offers, and subscription state. When a ship date arrives, it fires an event to the OMS.

  • Subscription lifecycle
  • Cadence & skip/delay logic
  • Cancel-save flows
  • Auto-renewal scheduling
Data Layer

PIM — Product Information

Product Information Management. Owns every product detail — descriptions, images, dosing charts, warnings, allergen info, and variant mapping. Feeds the site, packing slips, and every customer view.

  • Product catalog source of truth
  • Feeds site + packing slips
  • Dosing & warnings data
  • Image CDN integration
Routing Layer

Middleware

The plumbing between systems. Translates API calls, batches events, handles retries, and routes data between the OMS, PIM, fulfillment, and carriers. Nothing gets lost in transit.

  • API translation
  • Event routing & retries
  • Carrier label generation
  • Data transformation
Compliance Layer

Vet Portal

Prescription verification. Licensed PharmDs review every Rx before it ships, coordinate with prescribing vets when needed, and enforce HIPAA and pharmacy regulations — including large animal and equine.

  • Rx verification queue
  • Vet communication
  • HIPAA compliance
  • Prescription holds & releases
Messaging Layer

Iterable

Retention messaging engine. Fires every transactional email, shipment confirmation, AutoShip reminder, review request, and lifecycle campaign — triggered by OMS events.

  • Transactional email
  • AutoShip reminders
  • Review & reorder prompts
  • Lifecycle campaigns
Service Layer

Salesforce Service Cloud

Every customer interaction, order inquiry, and support case lives here. When you call or chat, the agent has full order history and status at a glance — instantly.

  • Support ticket tracking
  • Full order history view
  • Case → order linkage
  • Agent-facing data sync
Data Flow

What data moves between systems?

Every stage of the order lifecycle pushes specific data downstream. Cart posts orders to the OMS. The OMS routes prescriptions to the Vet Portal. Middleware pushes orders to fulfillment and pulls PIM data. Carriers return tracking numbers. SFSC and Iterable receive every event for service and messaging.

Cart → OMS

The storefront posts the order to the OMS with your cart contents. The OMS generates a unique order ID, soft-reserves inventory, and authorizes payment.

POST /orders { customer_id, line_items[], total, autoShip }

OMS → Vet Portal

If the order contains a prescription, the OMS routes it to the Vet Portal for pharmacist review. The pharmacist verifies the Rx against the order and either approves or holds it.

GET /prescriptions/{id} POST /prescriptions/{id}/approve

OMS → Middleware → Fulfillment

The OMS hands the approved order to middleware, which routes it to the fulfillment center. Product data is pulled from the PIM at this stage to guarantee packing slip accuracy.

POST /fulfillment/pick GET /pim/products/{sku}

Fulfillment → Carrier → OMS

Once packed, the fulfillment center requests a shipping label from the carrier API. The tracking number comes back through middleware and gets written to the OMS.

POST /carriers/label PATCH /orders/{id}/tracking

OMS → SFSC + Iterable

Every order event fires to Salesforce Service Cloud (so agents have the full picture) and to Iterable (so you get the right message at the right time).

POST /sfsc/cases/update POST /iterable/events

Ordergroove → OMS (AutoShip loop)

For AutoShip orders, Ordergroove runs the loop. On the ship date, it fires an event to the OMS, which creates a new order automatically and routes it back to Stage 01 of the pipeline.

POST /oms/orders { subscription_id, cadence, items[] }
Live Event Log

What does the OMS event log look like in production?

Every state change fires an event to every system that needs to know. The OMS event log captures each transition in real time — from order placement through pharmacy review, packing, shipment, and delivery. This is what real-time visibility into the pipeline looks like.

Live Event Stream · Order RK-847291 13 events
09:14:08 OMS order.placed · RK-847291 · 2 items · $118.39 · autoShip:true
09:14:09 Ordergroove subscription.registered · OG-SUB-48210-01 · cadence:30d
09:14:11 SFSC case.created · case:RK-CASE-9231 · linked to order RK-847291
09:14:12 Iterable email.queued · template:order-confirmation · customer_id:C-48210
11:32:41 Vet Portal rx.received · order RK-847291 · vet:Dr.Reynolds · awaiting review
11:32:58 Vet Portal rx.approved · rx_id:RX-20381 · verified_by:PharmD-J.Nguyen
11:33:02 OMS order.status_changed · stage_02_pharmacy_review → stage_03_packed
14:02:17 PIM catalog.lookup · sku:NEXGARD-3MO-60-121 · data_returned
14:02:22 Middleware carrier.label_generated · carrier:USPS · tracking:9400 1000 0000 0000 0000
16:48:31 Iterable email.sent · template:shipping-confirmation · tracking_link:active
16:48:33 SFSC case.updated · case:RK-CASE-9231 · status:shipped
16:48:35 Ordergroove subscription.next_scheduled · OG-SUB-48210-01 · next_ship:Nov-5-2026
18:22:04 Iterable email.queued · template:review-request · trigger:delivered+3d
Integration Patterns

How do the customer-facing views connect to a real OMS?

The customer-facing views already assume a schema that mirrors any standard OMS. Cart handles order creation. Track Order renders the state machine. Account displays order history. Returns evaluates eligibility. Every view is already built — the only change to go live is swapping the data source from localStorage to real API endpoints.

What's already built

The Cart page handles order creation. Track Order renders the full state machine. Account displays order history. Returns evaluates eligibility per order status. All four pages assume the same schema:

orders · order_items · order_events · status · tracking_number · auto_ship_schedule

That schema is the schema. Any OMS uses the same fundamental structure. The views are already correct.

What happens when credentials arrive

Cart posts to POST /orders instead of localStorage. Track Order reads from GET /orders/:id instead of a static object. Account lists from GET /orders?customer_id=X. Returns evaluates against POST /returns/check.

Every view is already built. The only change is swapping the data source. Give us the schema and the credentials — the customer-facing layer is done.

Platform Scale

Does the same OMS power other PetMeds partners?

Yes. Rural King Pet Pharmacy runs on the same OMS that powers PetMeds and every future white-label partner. Same seven systems. Same five stages. Same retention loop. Different brand. The OMS scales horizontally — adding a partner does not mean adding a pipeline.

This Node · Rural King

The white-label deployment you're on right now. Same architecture as the PetMeds main node — different brand skin, different category depth (dogs, cats, horses, livestock).

Back to Rural King home →

Trunk · PetMeds Main Node

The parent pharmacy node. Same seven systems, same five stages, same retention loop. Every white-label partner plugs into this trunk — the infrastructure underneath doesn't change.

See the PetMeds OMS page →

Start AutoShip on This Node
Common Questions

What questions do Rural King customers ask most?

The questions farm families and pet parents ask most about the OMS are: what is an OMS, how does an order flow through the pipeline, where does pharmacy review fit, how do AutoShip orders re-enter the pipeline, and what systems connect to it. Each is answered below.

An OMS is the central system that tracks every order from placement to delivery. It captures orders, reserves inventory, coordinates fulfillment, handles payment authorization, logs every state change, and fires downstream events to every system that needs to know. At Rural King Pet Pharmacy, the OMS is the hub every order routes through.

Five stages. Order Placed writes to the OMS. Pharmacy Review verifies the prescription through the Vet Portal. Packed routes through Middleware to fulfillment and pulls product data from the PIM. Shipped hands off to the carrier and fires tracking events to Iterable. Delivered closes the order but triggers the retention loop — review requests, reorder prompts, and AutoShip scheduling through Ordergroove.

Between order placement and fulfillment. Every prescription is verified by a licensed pharmacist through the Vet Portal before the order moves forward. If the prescription is unclear or needs coordination with the prescribing vet, the order is held — it doesn't ship until approval. This is where the licensing and HIPAA layer does its work — including large animal and equine medications.

AutoShip orders are generated by Ordergroove on a recurring schedule — typically every 30, 60, or 90 days. When the schedule fires, Ordergroove sends an event to the OMS, which creates a new order automatically and routes it through the same five-stage pipeline. You don't have to do anything. That's the retention engine — it's how farm families keep animals covered without driving to town.

Seven systems. The OMS is the hub — every order routes through it. Ordergroove manages AutoShip subscriptions. PIM supplies product data. Middleware routes events between systems. Vet Portal verifies every prescription. Iterable fires every customer-facing message. Salesforce Service Cloud handles every customer interaction.
See All FAQs

You've seen the architecture. Now see it working.

Track a real order through the pipeline, or start your own AutoShip loop and watch the systems do their job.