# RevCent Fulfillment Overview

This document gives a broad overview of fulfillment in RevCent.

It explains the difference between a **Site Fulfillment Center** and a **Fulfillment Account**, how fulfillment credentials are handled securely, how fulfillment affects shipping operations, and why fulfillment configuration matters for ecommerce businesses selling physical products.

This is a general RevCent fulfillment overview grounded in the Fulfillment Account, Site Fulfillment Center, and Secure Form operation schemas.

Sources:
- RevCent API operation details for `GetSiteFulfillmentCenters`
- RevCent API operation details for `GetSiteFulfillmentCenter`
- RevCent API operation details for `CreateFulfillmentAccount`
- RevCent API operation details for `GetFulfillmentAccount`
- RevCent API operation details for `GetFulfillmentAccounts`
- RevCent API operation details for `EditFulfillmentAccount`
- RevCent API operation details for `CreateSecureForm`

---

## What Fulfillment Means in RevCent

Fulfillment is the operational process of getting purchased physical products to the customer.

For ecommerce businesses, fulfillment usually involves:

- Receiving a sale or order
- Determining which products need to be shipped
- Sending order/shipping details to a warehouse, fulfillment provider, or logistics system
- Having the provider pick, pack, and ship the product
- Receiving or storing tracking/shipping status
- Handling cancellations, voids, refunds, and support questions related to shipment status

In RevCent, fulfillment configuration helps connect sales and shipping workflows to the correct fulfillment provider or fulfillment system.

Conceptual flow:

```text
Customer places order
  ↓
Sale/product/shipping data exists in RevCent
  ↓
RevCent uses configured Fulfillment Account
  ↓
Fulfillment provider receives required order/shipping details
  ↓
Product is shipped
  ↓
Tracking/shipping status supports support, reporting, and operations
```

---

# Core Difference: Site Fulfillment Center vs Fulfillment Account

The most important concept is the difference between:

```text
Site Fulfillment Center
```

and:

```text
Fulfillment Account
```

They are related, but they are not the same thing.

| Concept | Meaning |
|---|---|
| Site Fulfillment Center | A RevCent-supported fulfillment provider/type/center definition. It describes the available fulfillment center and the required credential/configuration fields needed to connect to it. |
| Fulfillment Account | A user-created account-level connection to a selected Site Fulfillment Center. It stores the user’s specific fulfillment setup and credentials through a secure form. |

In plain language:

```text
Site Fulfillment Center = the provider/integration type RevCent supports.
Fulfillment Account = your configured account with that provider.
```

---

# Site Fulfillment Centers

A Site Fulfillment Center is a RevCent-level fulfillment center definition.

It represents an available fulfillment provider or fulfillment center integration that a RevCent user can connect to.

Site Fulfillment Centers are retrieved using:

```text
GetSiteFulfillmentCenters
GetSiteFulfillmentCenter
```

A Site Fulfillment Center includes:

- Site fulfillment center ID
- Name
- Description
- Required fields

The required fields describe the information needed to connect a user’s Fulfillment Account to that fulfillment center.

Examples of required fields may include provider-specific values such as:

- API key
- Account ID
- Warehouse ID
- Username
- Password
- Client ID
- Location ID
- Other provider-specific configuration values

The exact fields depend on the selected Site Fulfillment Center.

---

## What Site Fulfillment Centers Are For

Site Fulfillment Centers answer:

```text
Which fulfillment providers or center integrations are available?
```

and:

```text
What information is required to connect to this provider?
```

The user does not create a Site Fulfillment Center. RevCent exposes the available Site Fulfillment Centers. The user chooses one and creates a Fulfillment Account connected to it.

---

# Fulfillment Accounts

A Fulfillment Account is a user-created connection to a selected Site Fulfillment Center.

A Fulfillment Account answers:

```text
Which user-specific fulfillment provider account should RevCent use?
```

A Fulfillment Account can include:

- Fulfillment account ID
- Name
- Description
- Enabled status
- Associated Site Fulfillment Center
- Whether required fulfillment center fields are saved
- Cancel-on-void behavior
- Securely saved provider credentials/configuration

The Fulfillment Account is what makes fulfillment operational for the RevCent user.

Conceptual relationship:

```text
RevCent account
  ↓
Fulfillment Account
  ↓
Selected Site Fulfillment Center
  ↓
Securely saved credentials/configuration
  ↓
Fulfillment/shipping workflow
```

---

## Analogy

A helpful analogy:

```text
Site Fulfillment Center = “ShipBob integration”
Fulfillment Account = “My Brand A ShipBob account”
```

The Site Fulfillment Center tells RevCent what provider/integration type is available.

The Fulfillment Account tells RevCent which user-specific provider account/configuration to use.

---

# Secure Credential Handling

Fulfillment credentials are sensitive.

They may include API keys, passwords, account IDs, tokens, warehouse IDs, or other provider-specific values.

RevCent uses Secure Forms to collect sensitive fulfillment credentials so they are not passed through normal request bodies, logs, or AI conversations.

Credentials should not be pasted directly into:

- AI chats
- Support notes
- Metadata
- Ordinary API request bodies
- Logs
- Internal messages

Use Secure Forms instead.

---

## Secure Form Workflow

The `CreateSecureForm` operation creates a secure form.

For fulfillment credentials, the secure form should use:

```text
form_source = fulfillment_center
form_source_id = site fulfillment center ID
```

Conceptual flow:

```text
User chooses Site Fulfillment Center
  ↓
Secure Form is created for that fulfillment center
  ↓
User opens secure form URL
  ↓
User enters required fulfillment credentials/configuration
  ↓
RevCent encrypts and saves the data internally
  ↓
Fulfillment Account is created or edited using secure_form_id
```

This prevents sensitive fulfillment credentials from being exposed in chat or request bodies.

---

## Secure Form Expiration

Secure Forms are temporary.

A secure form has a lifespan of 1 hour.

After expiration:

```text
The secure form URL is no longer valid.
The user cannot fill out the form.
Temporary saved data is deleted if the form was not completed.
```

Once completed, the secure form data is encrypted and saved internally by RevCent. A completed secure form cannot be modified.

If credentials need to change later, create a new secure form and use it with the relevant edit workflow.

---

# Creating a Fulfillment Account

Creating a Fulfillment Account generally follows this process:

```text
1. Retrieve available Site Fulfillment Centers.
2. Choose the correct Site Fulfillment Center.
3. Review the required fields.
4. Create a Secure Form for that Site Fulfillment Center.
5. User completes the Secure Form with provider credentials/configuration.
6. Create the Fulfillment Account using the Site Fulfillment Center ID and secure_form_id.
7. Enable the Fulfillment Account when ready.
```

The `CreateFulfillmentAccount` operation requires:

```text
name
fulfillment_center
```

It can also include:

```text
description
enabled
secure_form_id
```

The `fulfillment_center` value is the 20-character Site Fulfillment Center ID.

---

# Editing a Fulfillment Account

A Fulfillment Account can be edited later.

Common edit reasons include:

- Rename the account
- Update the description
- Enable or disable the account
- Change the associated Site Fulfillment Center
- Update credentials/configuration through a new Secure Form

The `EditFulfillmentAccount` operation is a partial edit operation:

```text
Only include the properties you wish to modify.
```

If changing credentials or changing the fulfillment center, the schema indicates that a `secure_form_id` should be provided.

---

# Important Fulfillment Account Fields

## `name`

The Fulfillment Account name should clearly identify the account.

Good examples:

```text
Brand A Fulfillment
Main Warehouse Account
US 3PL Fulfillment
WooCommerce Store A Fulfillment
Subscription Product Fulfillment
```

A generic name like `Fulfillment` is not helpful when there are multiple providers, warehouses, stores, or brands.

---

## `description`

The description should explain when the account is used.

Example:

```text
Primary fulfillment account for Brand A physical products sold through the main WooCommerce store.
```

Useful descriptions may mention:

- Brand
- Store
- Website
- Product type
- Region
- Fulfillment provider
- Production vs testing
- Operational notes

---

## `enabled`

`enabled` determines whether the Fulfillment Account is enabled.

A disabled account should not be treated as an active fulfillment option.

Recommended setup approach:

```text
Create disabled while credentials are being configured/tested.
Enable after the fulfillment account is verified.
```

---

## `fulfillment_center`

`fulfillment_center` is the selected Site Fulfillment Center ID.

It defines which RevCent-supported fulfillment provider/integration this user account connects to.

---

## `secure_form_id`

`secure_form_id` references a completed Secure Form containing the sensitive provider credentials/configuration.

Use it when:

- Creating a Fulfillment Account that needs credentials
- Updating fulfillment credentials
- Changing the Site Fulfillment Center
- Required fulfillment center fields need to be saved

---

# Retrieved Fulfillment Account Status Fields

When retrieving a Fulfillment Account, important status fields include:

```text
enabled
cancel_on_void
fulfillment_center
fulfillment_center_fields_saved
```

---

## `cancel_on_void`

`cancel_on_void` controls whether RevCent should automatically contact the fulfillment center and cancel a shipment if the shipment is fully refunded and/or voided in RevCent.

The schema recommends this be set to true.

Why it matters:

```text
Sale is fully refunded or voided
  ↓
Shipment may no longer be needed
  ↓
RevCent can contact the fulfillment center to cancel the shipment
  ↓
Business may avoid unnecessary shipping cost or customer confusion
```

This setting helps prevent cancelled or refunded orders from still being shipped.

---

## `fulfillment_center_fields_saved`

This field indicates whether the required fulfillment center fields have been saved to the user Fulfillment Account.

If false, the account may not be fully configured.

Conceptually:

```text
fulfillment_center_fields_saved = false
  ↓
Required provider credentials/configuration may be missing
  ↓
Fulfillment Account may not be ready for live fulfillment
```

If this field is false, the account likely needs credential/configuration updates through a Secure Form and the edit workflow.

---

# Fulfillment and Shipping

Fulfillment is closely related to shipping.

Shipping is the customer-facing movement of the product.

Fulfillment is the operational process that causes the product to be picked, packed, and shipped.

A typical ecommerce flow:

```text
Customer places order
  ↓
Sale/product sale is created
  ↓
Shipping record or shipping need exists
  ↓
Fulfillment Account tells RevCent which provider/account to use
  ↓
Fulfillment provider receives order/shipping details
  ↓
Shipment is processed
  ↓
Tracking/shipping status supports customer service and reporting
```

Fulfillment configuration affects whether shipments can be sent to the right provider with the right credentials.

---

---

# Shipment Updates and Shipping Events

RevCent fulfillment does not end when an order is sent to a fulfillment provider.

Shipment updates are an important part of the fulfillment lifecycle.

RevCent can receive and store shipment-related updates such as:

- Tracking number
- Tracking URL
- Shipping provider
- Shipping method
- Whether the shipment was sent/shipped
- Ship date
- Shipping status
- Fulfillment notification status
- Fulfillment provider/account context

Tracking numbers and tracking URLs can come from the user’s Fulfillment Account. Delivery-specific updates, such as knowing when a package was delivered, require an EasyPost or Shippo third-party integration if the user wants that delivery visibility in RevCent.

These updates are valuable because they connect fulfillment activity back into the broader RevCent customer, sale, support, and automation ecosystem.

Conceptual flow:

```text
Fulfillment provider processes order
  ↓
Shipment update is received
  ↓
RevCent stores tracking/shipping status
  ↓
Shipping event can trigger automation
  ↓
Customer, support, reporting, and AI workflows can respond
```

---

---

# Tracking Numbers, Tracking URLs, and Delivery Updates

RevCent can receive tracking information from a user’s Fulfillment Account for each shipment.

When a fulfillment provider processes a shipment, RevCent can receive shipment details such as:

- Tracking number
- Tracking URL
- Shipping provider
- Shipping method
- Shipped status
- Ship date
- Shipment-related status updates

This tracking information is important because it allows both the RevCent user and the customer to track the package.

Conceptually:

```text
Sale requires shipment
  ↓
Fulfillment Account sends shipment to provider
  ↓
Fulfillment provider creates tracking number
  ↓
RevCent receives tracking number / tracking URL
  ↓
User and customer can track the package
```

This makes the Fulfillment Account the source of the shipment’s tracking number and tracking URL.

---

## Tracking Numbers for Users

For RevCent users, tracking numbers help internal teams answer customer support and operations questions.

Examples:

```text
Has this customer’s package shipped?
What is the tracking number?
Which carrier is handling the shipment?
Can support send the tracking URL to the customer?
Was tracking received from the fulfillment provider?
```

This helps support teams respond faster and with more accurate information.

---

## Tracking Numbers for Customers

For customers, tracking numbers and tracking URLs improve the post-purchase experience.

A customer can use the tracking URL to see where their package is.

This helps reduce customer anxiety and common support questions such as:

```text
Where is my order?
Has my package shipped?
Can I get my tracking number?
When will it arrive?
```

Tracking numbers can also be used in Email Templates and customer-facing workflows.

Example:

```text
Tracking number received
  ↓
Email Template sends tracking link to customer
  ↓
Customer tracks package directly
  ↓
Support tickets are reduced
```

---

# Delivery Updates Require EasyPost or Shippo

Receiving a tracking number is different from knowing when a shipment was delivered.

If a RevCent user wants RevCent to know when a shipment was delivered, the user needs to create a third-party integration in RevCent using either:

```text
EasyPost
```

or:

```text
Shippo
```

RevCent can receive delivery updates from EasyPost or Shippo.

This is only necessary if the user wants delivery-level visibility.

Examples of delivery-level visibility:

- Knowing when a package was delivered
- Triggering post-delivery customer engagement
- Starting delivery confirmation emails
- Updating internal operations when delivery completes
- Supporting product-not-received chargeback evidence
- Triggering AI Assistants, Functions, or AI Voice Agents after delivery
- Creating customer follow-up workflows after delivery
- Reporting on delivered shipments

---

## When EasyPost or Shippo Is Needed

Use EasyPost or Shippo when the business wants to know delivery status.

Examples:

```text
The business wants to trigger an email when a package is delivered.
```

```text
The business wants an AI Assistant to start a post-delivery follow-up workflow.
```

```text
The business wants customer support to know whether the package was delivered.
```

```text
The business wants delivery evidence for chargeback mitigation.
```

```text
The business wants internal operations to track delivered shipments.
```

In these cases, EasyPost or Shippo should be added in RevCent as a third-party integration.

---

## When EasyPost or Shippo Is Not Needed

If the user does not need to know when shipments are delivered, then EasyPost or Shippo does not need to be added in RevCent.

For example, EasyPost or Shippo may not be necessary if the business only needs:

- Tracking numbers
- Tracking URLs
- Basic shipped status
- Customer tracking links
- Fulfillment-provider tracking data
- Manual carrier tracking by support or customers

In that case, the Fulfillment Account can still provide tracking numbers and tracking URLs, but delivery-status automation may not be available.

The key distinction is:

```text
Fulfillment Account = receives tracking number / tracking URL from the fulfillment provider
EasyPost or Shippo = receives delivery updates, such as when the package was delivered
```

---

# How Delivery Updates Fit Into Customer Engagement

Delivery updates can trigger customer engagement workflows.

Examples:

```text
Package delivered
  ↓
Email Template sends delivery confirmation
```

```text
Package delivered
  ↓
AI Assistant creates post-purchase follow-up plan
```

```text
Package delivered
  ↓
Customer receives product education email
```

```text
Package delivered
  ↓
Customer is added to review request workflow
```

```text
Package delivered
  ↓
AI Voice Agent follows up for high-value customers
```

Delivery status is valuable because it marks the moment the customer has likely received the product.

That moment can be used for:

- Product onboarding
- Review requests
- Customer satisfaction checks
- Cross-sell campaigns
- Reorder timing
- Subscription engagement
- Support follow-up
- Chargeback prevention

---

# How Delivery Updates Fit Into Business Operations

Delivery updates can also trigger internal operations.

Examples:

```text
Package delivered
  ↓
Customer metadata is updated with last_delivery_date
```

```text
Package delivered
  ↓
Customer is moved into Post-Purchase Follow-Up group
```

```text
Package delivered
  ↓
Internal system records fulfillment completion
```

```text
Package not delivered after expected time
  ↓
Function creates support task
```

```text
Delivery exception occurs
  ↓
Support team is notified
```

This allows shipping data to become operational data.

Rather than being only a tracking link, delivery status can drive business workflows across RevCent.

---

# Delivery Updates and Chargeback Evidence

Delivery updates can be especially useful for chargeback prevention and chargeback mitigation.

For product-not-received disputes, delivery evidence may be important.

If RevCent receives delivery updates through EasyPost or Shippo, then delivery status can support evidence such as:

- Package was shipped
- Package was delivered
- Delivery date
- Carrier/tracking information
- Tracking URL
- Shipping provider
- Ship-to information

Conceptual flow:

```text
Package delivered
  ↓
Delivery update received through EasyPost or Shippo
  ↓
RevCent stores delivery-related context
  ↓
Customer later files product-not-received chargeback
  ↓
Chargeback evidence can include shipping/delivery details
```

This makes delivery updates useful not only for customer experience, but also for revenue protection and dispute response.

---

# Best Practice: Decide Whether Delivery Visibility Is Needed

Not every business needs delivery-status updates inside RevCent.

Before adding EasyPost or Shippo, the user should decide whether they actually need RevCent to know when a shipment was delivered.

Use EasyPost or Shippo if the business wants:

- Delivery-triggered customer engagement
- Delivery confirmation emails
- Delivery-based AI Assistant workflows
- Delivery-based AI Voice Agent follow-up
- Delivery-based internal operations
- Delivery evidence for chargebacks
- Delivered shipment reporting

Do not add EasyPost or Shippo solely because a fulfillment account exists.

The Fulfillment Account handles fulfillment/tracking-number flow.

EasyPost or Shippo is only needed when the business wants delivery updates inside RevCent.


## Why Shipment Updates Matter

Shipment updates help ecommerce businesses answer operational questions:

```text
Has the order shipped?
What is the tracking number?
Which provider shipped it?
Was the package delivered?
When was it delivered?
Did fulfillment receive the order?
Should support follow up?
Should the customer receive a shipping email?
```

Shipment updates are also important for customer trust.

Customers often care about shipping status more than almost any other post-purchase detail.

A business that can automatically communicate tracking, shipped status, and delivery updates gives customers a better experience and reduces support tickets.

---

# Shipping Events in the RevCent Ecosystem

Shipping events can be used as automation triggers across RevCent.

Examples of shipping-related business events include:

```text
Shipment created
Tracking number added
Shipment sent to fulfillment
Shipment shipped
Shipment delivered
Shipment updated
Fulfillment notification failed
Shipment cancelled
```

When these events occur, they can trigger downstream workflows.

Important automation targets include:

- Functions
- AI Assistants
- Email Templates
- AI Voice Agents
- External tools
- Third-party AI Agents
- CRM systems
- Helpdesk systems
- Customer support alerts
- Risk or chargeback workflows
- BigQuery/reporting workflows

The exact event notation should be selected from the available RevCent trigger list when configuring the automation. The important concept is that shipment activity can become a trigger for customer engagement and business operations.

---

## Shipping Events Triggering Email Templates

Shipping events are a natural fit for customer-facing emails.

Examples:

```text
Tracking number added
  ↓
Email Template sends tracking email to customer
```

```text
Shipment shipped
  ↓
Email Template sends “Your order has shipped” email
```

```text
Shipment delivered
  ↓
Email Template sends delivery confirmation or post-purchase follow-up
```

```text
Shipment delayed or fulfillment issue detected
  ↓
Email Template sends customer support notice
```

This helps automate customer communication and reduce “Where is my order?” support requests.

---

## Shipping Events Triggering Functions

Functions can run custom code when shipping events occur.

Examples:

```text
Tracking number added
  ↓
Function sends tracking data to external CRM or helpdesk
```

```text
Shipment delivered
  ↓
Function updates customer metadata: last_delivered_order_date
```

```text
Fulfillment notification failed
  ↓
Function alerts operations team in Slack or another system
```

```text
Shipment cancelled
  ↓
Function updates external inventory or warehouse system
```

Functions are useful when shipping events need to connect RevCent to external systems.

---

## Shipping Events Triggering AI Assistants

AI Assistants can reason about shipping events and decide what should happen next.

Examples:

```text
Shipment delivered
  ↓
AI Assistant reviews customer, product, and purchase history
  ↓
AI recommends post-purchase follow-up or cross-sell message
```

```text
Shipment appears delayed
  ↓
AI Assistant summarizes the issue and recommends support action
```

```text
Customer has repeated shipping issues
  ↓
AI Assistant creates a support summary and recommends escalation
```

```text
High-value customer shipment is delayed
  ↓
AI Assistant recommends proactive support outreach
```

AI Assistants are useful when shipping data needs interpretation, prioritization, or a next-best-action recommendation.

---

## Shipping Events Triggering AI Voice Agents

AI Voice Agents can be used when shipping events require higher-touch customer engagement.

Examples:

```text
High-value customer shipment delayed
  ↓
AI Voice Agent calls customer with status update or support guidance
```

```text
Shipment delivered for a high-value product
  ↓
AI Voice Agent follows up to confirm satisfaction or offer onboarding
```

```text
Repeated delivery failure
  ↓
AI Voice Agent contacts customer to confirm address or next steps
```

```text
Subscription shipment issue
  ↓
AI Voice Agent calls customer before churn or cancellation risk increases
```

AI Voice Agents are especially useful when the shipping event is time-sensitive, high-value, or likely to affect customer satisfaction.

---

## Shipping Events Triggering External Tools and Third-Party AI Agents

Shipping events can also trigger workflows outside RevCent.

Examples:

```text
Shipment shipped
  ↓
External CRM receives shipping milestone
```

```text
Shipment delivered
  ↓
Third-party AI Agent schedules post-purchase sequence
```

```text
Fulfillment issue detected
  ↓
Helpdesk ticket is created
```

```text
Product-not-received risk detected
  ↓
External risk or chargeback-prevention tool is notified
```

This lets RevCent shipping activity become part of the business’s broader operations stack.

---

# Customer Engagement From Shipping Events

Shipping events can drive the entire post-purchase customer journey.

Example journey:

```text
Order placed
  ↓
Shipment created
  ↓
Customer receives order-processing email
  ↓
Tracking number added
  ↓
Customer receives tracking email
  ↓
Shipment shipped
  ↓
Customer receives shipping confirmation
  ↓
Shipment delivered
  ↓
Customer receives delivery confirmation
  ↓
AI Assistant or Email Template triggers product education/cross-sell
  ↓
Customer may be added to reorder, review request, or support follow-up workflow
```

This turns fulfillment into an engagement engine, not just an operations process.

---

# Business Operations From Shipping Events

Shipping events can also improve internal operations.

Examples:

```text
Fulfillment failed
  ↓
Operations team is alerted
```

```text
Shipment has no tracking number after expected time
  ↓
Function creates a support task
```

```text
Package delivered
  ↓
Customer group or metadata is updated
```

```text
Shipping issue occurs for VIP customer
  ↓
AI Assistant summarizes issue
  ↓
Support team or AI Voice Agent follows up
```

This helps the business catch problems earlier and respond before customers become frustrated.

---

# Shipping Events and Chargeback Prevention

Shipping data can also help prevent and fight chargebacks.

Product-not-received disputes often depend on whether the merchant can show shipping and delivery evidence.

Shipment updates such as tracking number, shipped date, delivery status, and delivered date can help support chargeback evidence.

Example:

```text
Shipment delivered
  ↓
Delivery status is stored
  ↓
Customer later files product-not-received chargeback
  ↓
Chargeback document can include shipping/tracking evidence
```

Shipping events can also trigger proactive workflows:

```text
Delivery issue detected
  ↓
Support outreach occurs before customer disputes charge
```

This ties fulfillment directly to risk management and revenue protection.

---

# Shipping Events and Customer Groups / Metadata

Shipping events can update customer groups or metadata.

Examples:

```text
Shipment delivered
  ↓
metadata.last_delivery_date = current date
```

```text
Repeated shipping issue
  ↓
Customer added to Shipping Support Review group
```

```text
Product delivered
  ↓
Customer added to Post-Purchase Follow-Up group
```

```text
Subscription shipment delivered
  ↓
Customer added to Subscription Delivery Complete group
```

These updates can then trigger more automation across RevCent.

---

# Best Practice: Treat Shipping Events as Lifecycle Events

Shipping events should be treated as important customer lifecycle events.

They are not only logistics updates.

They can signal:

- Customer is waiting for an order
- Customer has received their product
- Customer may need onboarding
- Customer may need support
- Customer may be ready for a review request
- Customer may be ready for a reorder reminder
- Customer may be at risk if delivery failed
- Customer may need proactive outreach

This is why fulfillment should be integrated with Email Templates, AI Assistants, AI Voice Agents, Functions, customer groups, metadata, and reporting.


# Fulfillment and Physical Products

Fulfillment is especially important for physical products.

If a business sells physical goods, the fulfillment process is what ensures the customer actually receives what they bought.

Fulfillment configuration can affect:

- Which warehouse ships the order
- Which provider receives order details
- Whether tracking is available
- Whether shipped/delivered status can be tracked
- Whether cancellations can be communicated to the provider
- How support teams answer shipping questions
- Whether evidence exists for chargebacks related to delivery
- Whether fulfillment operations scale without manual entry

---

---

# Shippable Products Must Be Associated With a Fulfillment Account

One of the most important fulfillment requirements in RevCent is that every shippable product should be associated with a Fulfillment Account.

In product configuration, a product can be marked as:

```text
is_shippable = true
```

When a product is shippable, its shipping attributes should include a Fulfillment Account:

```text
shipping_attributes.fulfillment_account
```

This is the 20-character Fulfillment Account ID associated with the product.

This matters because RevCent needs to know which configured fulfillment account should handle the product when it is sold.

Conceptually:

```text
Product is shippable
  ↓
Product has shipping attributes
  ↓
Product is associated with a Fulfillment Account
  ↓
Sale occurs
  ↓
RevCent knows which fulfillment provider/account should receive the shipment
```

Without this association, RevCent may not know where to send the fulfillment request or which provider configuration should be used.

---

## Why This Association Matters

Associating shippable products with Fulfillment Accounts is important for:

- Correct fulfillment routing
- Correct warehouse/provider selection
- Automated fulfillment submission
- Accurate shipping status tracking
- Tracking number updates
- Shipped/delivered status updates
- Customer support visibility
- Chargeback evidence
- Refund/void shipment cancellation behavior
- Multi-brand and multi-store fulfillment organization
- Operational reporting

A Fulfillment Account is not useful unless the relevant shippable products are connected to it.

Similarly, a shippable product is not fully operational unless RevCent knows which Fulfillment Account should handle it.

---

## Product-Level Fulfillment Routing

The product-level Fulfillment Account allows RevCent to route shipments based on the product sold.

This is useful when:

```text
Product A ships from Warehouse A
Product B ships from Warehouse B
Brand A products use Provider A
Brand B products use Provider B
Subscription products use a specific fulfillment account
Trial products use a specific fulfillment workflow
```

Examples:

```text
Brand A Supplement → Brand A Fulfillment Account
Brand B Skincare Product → Brand B Fulfillment Account
US Product → US Warehouse Fulfillment Account
EU Product → EU Warehouse Fulfillment Account
Subscription Refill Product → Subscription Fulfillment Account
```

This makes fulfillment scalable because routing can be based on the product’s own shipping configuration rather than manual decisions after every sale.

---

## Shipping Attributes

For shippable products, shipping attributes may include values such as:

- Weight
- Length
- Width
- Height
- Fulfillment Account

These details can support fulfillment provider requirements, shipping calculations, operational planning, and provider routing.

The Fulfillment Account is the key link between:

```text
Product configuration
  ↓
Fulfillment provider/account
  ↓
Shipping workflow
```

---

## Bundles and Fulfillment

RevCent products can also be bundle products.

Bundle settings can include an unbundle method, including whether the bundle is unbundled at sale or at fulfillment.

This matters because fulfillment needs to know what physical products actually need to be shipped.

Conceptually:

```text
Bundle product sold
  ↓
Bundle is unbundled based on configuration
  ↓
Individual shippable products are identified
  ↓
Each shippable product must have proper fulfillment configuration
  ↓
Fulfillment proceeds correctly
```

For bundles, it is especially important that every shippable component has clear fulfillment routing.

---

## Best Practice

Best practice:

```text
Every product with is_shippable = true should have a valid shipping_attributes.fulfillment_account.
```

Before selling or enabling a shippable product, confirm:

1. Product is marked shippable if it physically ships.
2. Shipping attributes are complete.
3. Fulfillment Account is assigned.
4. Fulfillment Account is enabled.
5. Fulfillment Account required fields are saved.
6. Fulfillment Account is connected to the correct Site Fulfillment Center.
7. The product’s fulfillment account matches the brand, store, warehouse, provider, or region that should ship it.


# Fulfillment and Refunds / Voids

Refunds and voids may require fulfillment action.

If an order has not shipped yet, the business may want to cancel fulfillment when a sale is fully refunded or voided.

This is where `cancel_on_void` is important.

Recommended concept:

```text
cancel_on_void = true
```

Potential benefits:

- Avoid shipping cancelled orders
- Avoid unnecessary fulfillment cost
- Reduce customer confusion
- Reduce support issues
- Avoid inventory issues
- Prevent products from being sent after payment reversal

---

# Fulfillment and Chargeback Evidence

Fulfillment and shipping data can be important when fighting chargebacks.

For disputes such as:

```text
Product not received
Customer claims item was not delivered
Customer disputes receiving the product
```

shipping and fulfillment evidence may help support representment.

Useful fulfillment/shipping evidence can include:

- Shipping provider
- Shipping method
- Tracking number
- Tracking URL
- Shipped status
- Delivered status
- Ship date
- Delivered date
- Ship-to details
- Fulfillment account/provider context

This is why fulfillment matters beyond shipping alone. It can also support dispute response and risk workflows.

---

# Fulfillment and Customer Support

Fulfillment data helps customer support answer practical questions such as:

```text
Has the order been sent to fulfillment?
Which fulfillment provider is handling it?
Has the item shipped?
What is the tracking number?
Was the package delivered?
Can the shipment still be cancelled?
```

A well-configured fulfillment setup can reduce support friction because support teams can understand order/shipping status more clearly.

---

# Fulfillment for Multi-Brand, Multi-Store, or Multi-Warehouse Businesses

Some RevCent accounts may manage multiple brands, websites, stores, warehouses, or regions.

Fulfillment configuration can support this by creating clearly named Fulfillment Accounts for each operational setup.

Examples:

```text
Brand A Fulfillment Account
Brand B Fulfillment Account
WooCommerce Store A Fulfillment
US Warehouse Fulfillment
EU Warehouse Fulfillment
Subscription Product Fulfillment
```

Separate Fulfillment Accounts may be useful when:

- Different brands use different warehouses
- Different stores use different providers
- Different products ship from different locations
- Different regions require different fulfillment setups
- Different providers require different credentials
- Testing and production accounts should remain separate

---

# Fulfillment and Reporting

Fulfillment data can be useful for operational reporting.

Reporting questions might include:

```text
Which fulfillment accounts are enabled?
Which provider is used for which brand or store?
Which shipments were sent to which fulfillment provider?
How often are shipments cancelled after void/refund?
Which products generate the most fulfillment issues?
Which provider has the most delayed shipments?
How many product-not-received chargebacks involve shipped/delivered orders?
```

For simple review, list and retrieve operations can help inspect Fulfillment Accounts.

For counts, metrics, trends, and operational reporting, BigQuery-style reporting is usually more appropriate than list operations.

---

# Fulfillment Setup Best Practices

## Use clear Fulfillment Account names

The name should identify the brand, store, provider, region, or warehouse.

Example:

```text
Brand A - US Warehouse Fulfillment
```

---

## Add useful descriptions

Descriptions should explain when the account is used.

Example:

```text
Primary fulfillment account for Brand A physical products sold through the main WooCommerce store.
```

---

## Use Secure Forms for credentials

Do not collect fulfillment credentials directly in chat, notes, metadata, or ordinary request bodies.

Use Secure Forms.

---

## Confirm required fields are saved

Check:

```text
fulfillment_center_fields_saved
```

If false, the Fulfillment Account may not be operational.

---

## Keep `cancel_on_void` enabled when appropriate

The schema recommends `cancel_on_void` be true.

This helps avoid shipping orders that were fully refunded or voided.

---

## Disable accounts that are not ready

If credentials are incomplete or testing is not complete, keep the Fulfillment Account disabled.

---

## Be careful when changing Site Fulfillment Centers

Changing the Site Fulfillment Center changes the provider/integration relationship and may require new credentials.

---

# Common Fulfillment Mistakes

## Mistake: Confusing Fulfillment Center with Fulfillment Account

Wrong:

```text
The user creates a Fulfillment Center.
```

Correct:

```text
RevCent exposes Site Fulfillment Centers. The user creates Fulfillment Accounts connected to those centers.
```

---

## Mistake: Not reviewing required fields

Each Site Fulfillment Center may have required fields.

The user should know what fields are needed before creating the Fulfillment Account.

---

## Mistake: Putting credentials in chat or request bodies

Sensitive fulfillment credentials should be collected through Secure Forms.

---

## Mistake: Creating an account without complete credentials

If required fields are not saved, the account may not be operational.

Check:

```text
fulfillment_center_fields_saved
```

---

## Mistake: Using a generic account name

A name like:

```text
Fulfillment
```

is not helpful when there are multiple brands, stores, providers, or warehouses.

---

## Mistake: Disabling `cancel_on_void` without understanding the consequences

If shipment cancellation on full refund/void is not enabled, a product may still ship after a payment reversal or cancellation.

---

# Fulfillment Lifecycle Example

```text
1. Business decides which fulfillment provider/warehouse to use.
2. RevCent user retrieves available Site Fulfillment Centers.
3. User selects the correct Site Fulfillment Center.
4. Required fields are reviewed.
5. Secure Form is created for that fulfillment center.
6. User submits required provider credentials/configuration securely.
7. Fulfillment Account is created with name, description, fulfillment_center ID, and secure_form_id.
8. Fulfillment Account is enabled after setup is verified.
9. Sales/orders requiring shipment can use the Fulfillment Account.
10. Fulfillment provider processes the shipment.
11. Shipping/tracking information supports support, reporting, and chargeback evidence.
12. If an order is fully refunded or voided, cancel_on_void can help cancel shipment with the fulfillment center.
```

---

# Key Takeaways

## Site Fulfillment Center

```text
A RevCent-supported fulfillment provider/center definition.
```

It tells RevCent:

```text
What provider/integration exists
What required fields are needed
```

## Fulfillment Account

```text
The user’s configured connection to a selected Site Fulfillment Center.
```

It tells RevCent:

```text
Which provider account/configuration to use for this user
Whether it is enabled
Whether required fields are saved
Whether to cancel shipment on void/refund
```

## Secure Form

```text
The secure way to collect sensitive fulfillment credentials.
```

It prevents credentials from being exposed in chat, logs, or ordinary request bodies.

---

# Summary

Fulfillment in RevCent connects ecommerce sales and shipping workflows to the provider or warehouse that ships physical products.

The key distinction is:

```text
Site Fulfillment Center = RevCent-supported provider/integration definition
Fulfillment Account = user-created account connection to that provider
```

A strong fulfillment setup helps ecommerce businesses:

- Send orders to the correct fulfillment provider
- Ensure every shippable product is associated with a Fulfillment Account
- Keep provider credentials secure
- Organize fulfillment by brand, store, provider, or region
- Track whether fulfillment accounts are ready
- Cancel shipments when orders are fully voided or refunded
- Improve customer support around shipping questions
- Receive tracking numbers and tracking URLs from Fulfillment Accounts
- Optionally receive delivered-status updates through EasyPost or Shippo third-party integrations
- Use shipping and delivery events to trigger Functions, AI Assistants, Email Templates, AI Voice Agents, and external tools
- Support chargeback evidence involving shipped/delivered products
- Reduce manual fulfillment work
- Scale physical product operations

The most important operational rule is:

```text
Choose the correct Site Fulfillment Center, collect credentials securely through a Secure Form, create the user Fulfillment Account, verify required fields are saved, associate every shippable product with the correct Fulfillment Account, use tracking numbers/tracking URLs from fulfillment accounts, and add EasyPost or Shippo only when delivered-status updates are needed for customer engagement, internal operations, reporting, or chargeback evidence.
```


---
Document Parent Directory
* [Operations](https://revcent.com/documentation/markdown/mcp/operation/index.md) - AI/MCP details and overviews for operations available within the RevCent MCP.