> ## Documentation Index
> Fetch the complete documentation index at: https://developers.redo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# fulfillmentGroupsSearch

> Search fulfillment groups by text and filters, with the same matching as the Redo fulfillment app's search box and filters: the store's own groups and, for a 3PL, the groups it ships for its clients. Results come from a search index and can trail writes by a few seconds; to sync changes, use `fulfillmentGroups` with `updatedAtAfter` instead.

**Required scopes:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**Store must have one of:** `OMS`, `WMS`

## Arguments

**after** `String`

Forward pagination cursor — returns fulfillment groups after it.

**before** `String`

Backward pagination cursor — returns fulfillment groups before it.

**filter** `[FulfillmentGroupFilter](/docs/api-reference/v3/reference/shipping/fulfillment-group-filter)`

Which fulfillment groups to include.

**fields**

**addressVerified** `Boolean`

Whether the destination address was verified.

**and** `[\[FulfillmentGroupFilter!\]](/docs/api-reference/v3/reference/shipping/fulfillment-group-filter)`

Every one of these filters matches.

**assignee** `[IdFilter](/docs/api-reference/v3/reference/common/id-filter)`

The team member the group is assigned to, by `TeamMember.id`.

**fields**

**anyOf** `[ID!]`

One of these ids (at most 100).

**noneOf** `[ID!]`

None of these ids (at most 100).

**carrier** `[StringListFilter](/docs/api-reference/v3/reference/common/string-list-filter)`

The carrier of the group's selected rate, by carrier code (for example `USPS`, `UPS`, `FedEx`, `DHLExpress`). `USPS`, `UPS` and `FedEx` include their sub-services. A code that names no carrier matches nothing.

**fields**

**allOf** `[String!]`

Contains every one of these values (at most 100).

**anyOf** `[String!]`

Contains at least one of these values (at most 100).

**noneOf** `[String!]`

Contains none of these values (at most 100).

**createdAt** `[DateTimeFilter](/docs/api-reference/v3/reference/common/date-time-filter)`

When Redo created the group, as `FulfillmentGroup.createdAt` returns it.

**fields**

**gt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

After this instant.

**gte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or after this instant.

**lt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

Before this instant.

**lte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or before this instant.

**customFields** `[\[FulfillmentGroupCustomFieldFilter!\]](/docs/api-reference/v3/reference/shipping/fulfillment-group-custom-field-filter)`

Custom fields the store set up, by key, as `fulfillmentGroupCustomFields` lists them. Every one must match.

**fields**

**date** `[DateTimeFilter](/docs/api-reference/v3/reference/common/date-time-filter)`

For a DATE field.

**key** `String!` *required*

The metafield's `namespace.key`, or the attribute's name, as `fulfillmentGroupCustomFields` lists it.

**number** `[FloatFilter](/docs/api-reference/v3/reference/common/float-filter)`

For a NUMBER field.

**source** `[FulfillmentGroupCustomFieldSource!](/docs/api-reference/v3/reference/shipping/fulfillment-group-custom-field-source)` *required*

Where the field reads its value.

**text** `[StringListFilter](/docs/api-reference/v3/reference/common/string-list-filter)`

For a TEXT field.

**deliveryMethod** `[DeliveryMethodKindFilter](/docs/api-reference/v3/reference/common/delivery-method-kind-filter)`

How the group's orders are delivered.

**fields**

**allOf** `[\[DeliveryMethodKind!\]](/docs/api-reference/v3/reference/shipping/delivery-method-kind)`

Every one of these values.

**anyOf** `[\[DeliveryMethodKind!\]](/docs/api-reference/v3/reference/shipping/delivery-method-kind)`

One of these values.

**noneOf** `[\[DeliveryMethodKind!\]](/docs/api-reference/v3/reference/shipping/delivery-method-kind)`

None of these values.

**destinationCountryCode** `[StringListFilter](/docs/api-reference/v3/reference/common/string-list-filter)`

The ISO 3166-1 alpha-2 country code of the address the group ships to.

**fields**

**allOf** `[String!]`

Contains every one of these values (at most 100).

**anyOf** `[String!]`

Contains at least one of these values (at most 100).

**noneOf** `[String!]`

Contains none of these values (at most 100).

**fulfillBy** `[DateTimeFilter](/docs/api-reference/v3/reference/common/date-time-filter)`

When the group must ship by.

**fields**

**gt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

After this instant.

**gte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or after this instant.

**lt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

Before this instant.

**lte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or before this instant.

**fulfillerAccount** `[IdFilter](/docs/api-reference/v3/reference/common/id-filter)`

The account that ships the group, by account id.

**fields**

**anyOf** `[ID!]`

One of these ids (at most 100).

**noneOf** `[ID!]`

None of these ids (at most 100).

**itemQuantity** `[FloatFilter](/docs/api-reference/v3/reference/common/float-filter)`

How many items the group holds in all.

**fields**

**gt** `Float`

Greater than this value.

**gte** `Float`

At least this value.

**lt** `Float`

Less than this value.

**lte** `Float`

At most this value.

**labelPrinted** `Boolean`

Whether the group's shipping label was printed.

**labelPurchasedAt** `[DateTimeFilter](/docs/api-reference/v3/reference/common/date-time-filter)`

When the group's shipping label was bought.

**fields**

**gt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

After this instant.

**gte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or after this instant.

**lt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

Before this instant.

**lte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or before this instant.

**merchantAccount** `[IdFilter](/docs/api-reference/v3/reference/common/id-filter)`

The store that owns the group, by account id. Useful to a 3PL narrowing to one client.

**fields**

**anyOf** `[ID!]`

One of these ids (at most 100).

**noneOf** `[ID!]`

None of these ids (at most 100).

**not** `[FulfillmentGroupFilter](/docs/api-reference/v3/reference/shipping/fulfillment-group-filter)`

This filter does not match.

**or** `[\[FulfillmentGroupFilter!\]](/docs/api-reference/v3/reference/shipping/fulfillment-group-filter)`

At least one of these filters matches.

**orderCreatedAt** `[DateTimeFilter](/docs/api-reference/v3/reference/common/date-time-filter)`

When the group's order was placed.

**fields**

**gt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

After this instant.

**gte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or after this instant.

**lt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

Before this instant.

**lte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or before this instant.

**orderName** `[ContainsStringListFilter](/docs/api-reference/v3/reference/common/contains-string-list-filter)`

The names of the group's orders, as the sales channel shows them (for example `#1001`).

**fields**

**allOf** `[String!]`

Contains every one of these values (at most 100).

**anyOf** `[String!]`

Contains at least one of these values (at most 100).

**contains** `String`

Contains a value with this text anywhere in it (3 to 200 characters).

**noneOf** `[String!]`

Contains none of these values (at most 100).

**notContains** `String`

Contains no value with this text anywhere in it (3 to 200 characters).

**packingSlipPrinted** `Boolean`

Whether the group's packing slip was printed.

**requestedService** `[PrefixStringListFilter](/docs/api-reference/v3/reference/common/prefix-string-list-filter)`

The shipping option the customer chose at checkout, by name (for example `Standard Shipping`).

**fields**

**allOf** `[String!]`

Contains every one of these values (at most 100).

**anyOf** `[String!]`

Contains at least one of these values (at most 100).

**noneOf** `[String!]`

Contains none of these values (at most 100).

**notStartsWith** `String`

Contains no value starting with this text (1 to 200 characters).

**startsWith** `String`

Contains a value starting with this text (1 to 200 characters).

**scanVerified** `Boolean`

Whether the group's items were scan verified.

**shippedAt** `[DateTimeFilter](/docs/api-reference/v3/reference/common/date-time-filter)`

When the group shipped.

**fields**

**gt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

After this instant.

**gte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or after this instant.

**lt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

Before this instant.

**lte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or before this instant.

**sku** `[ContainsStringListFilter](/docs/api-reference/v3/reference/common/contains-string-list-filter)`

The SKUs of the group's items.

**fields**

**allOf** `[String!]`

Contains every one of these values (at most 100).

**anyOf** `[String!]`

Contains at least one of these values (at most 100).

**contains** `String`

Contains a value with this text anywhere in it (3 to 200 characters).

**noneOf** `[String!]`

Contains none of these values (at most 100).

**notContains** `String`

Contains no value with this text anywhere in it (3 to 200 characters).

**status** `[FulfillmentGroupStatusFilter](/docs/api-reference/v3/reference/common/fulfillment-group-status-filter)`

The group's status.

**fields**

**anyOf** `[\[FulfillmentGroupStatus!\]](/docs/api-reference/v3/reference/shipping/fulfillment-group-status)`

One of these values.

**noneOf** `[\[FulfillmentGroupStatus!\]](/docs/api-reference/v3/reference/shipping/fulfillment-group-status)`

None of these values.

**tags** `[StringListFilter](/docs/api-reference/v3/reference/common/string-list-filter)`

The group's tags, by name.

**fields**

**allOf** `[String!]`

Contains every one of these values (at most 100).

**anyOf** `[String!]`

Contains at least one of these values (at most 100).

**noneOf** `[String!]`

Contains none of these values (at most 100).

**updatedAt** `[DateTimeFilter](/docs/api-reference/v3/reference/common/date-time-filter)`

When Redo last updated the group.

**fields**

**gt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

After this instant.

**gte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or after this instant.

**lt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

Before this instant.

**lte** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

At or before this instant.

**first** `Int`

Forward pagination: returns the first N fulfillment groups (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N fulfillment groups (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**reverse** `Boolean`

Flips the order: weakest match, or oldest, first.

**sort** `[FulfillmentGroupSearchSortKey](/docs/api-reference/v3/reference/shipping/fulfillment-group-search-sort-key)`

Defaults to RELEVANCE with `text`, CREATED\_AT without. Relevance order can shift as groups change; use a date sort to page through every match stably.

**text** `String`

What to search for: order number or name, customer name, email, SKU, item title, tracking number and more, at most 200 characters. Omit to page through the filter's matches.

## Returns

**fulfillmentGroupsSearch** `[FulfillmentGroupConnection!](/docs/api-reference/v3/pagination)` *required*

A paginated list of FulfillmentGroup items.

**fields**

**edges** `[\[FulfillmentGroupEdge!\]!](/docs/api-reference/v3/pagination)` *required*

The list of edges (each a node plus its pagination `cursor`).

**fields**

**cursor** `String!` *required*

Opaque cursor for this item; pass to `after`/`before` to page from here.

**node** `[FulfillmentGroup!](/docs/api-reference/v3/reference/shipping/fulfillment-group)` *required*

The item at this edge.

**fields**

**addressVerification** `[AddressVerification!](/docs/api-reference/v3/reference/shipping/address-verification)` *required*

Whether the group's addresses were verified.

**assignee** `[TeamMember](/docs/api-reference/v3/reference/common/team-member)`

The team member the group is assigned to. Null when unassigned, or the member isn't on the caller's team.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**batch** `[FulfillmentBatch](/docs/api-reference/v3/reference/shipping/fulfillment-batch)`

The batch the group's label was bought in. Null before a label is bought, or when the batch isn't the caller's.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**billingAddress** `[ShippingAddress](/docs/api-reference/v3/reference/shipping/shipping-address)`

The order's billing address, if any.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the group was created.

**customer** `[OrderCustomer](/docs/api-reference/v3/reference/orders/order-customer)`

The customer the group ships to, if known.

**customs** `[FulfillmentGroupCustoms](/docs/api-reference/v3/reference/shipping/fulfillment-group-customs)`

The customs details. Null when the group ships within one country.

**deliveryMethod** `[DeliveryMethodKind](/docs/api-reference/v3/reference/shipping/delivery-method-kind)`

How the customer chose to receive the order.

**destinationAddress** `[ShippingAddress](/docs/api-reference/v3/reference/shipping/shipping-address)`

Where the group ships to.

**events** `[\[FulfillmentGroupEvent!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-group-event)` *required*

What happened to the group, newest first.

**fulfillBy** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

When the group must ship by: the merchant's override, else the service-level date.

**fulfillerAccountId** `ID`

The account that ships the group: a 3PL, or the merchant itself, when it equals `merchantAccountId`.

**fulfillmentOrders** `[\[FulfillmentGroupFulfillmentOrder!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-group-fulfillment-order)` *required*

The fulfillment orders the group ships. A merged group spans several orders.

**id** `ID!` *required*

The id of this fulfillment group.

**labelPurchase** `[FulfillmentGroupLabelPurchase!](/docs/api-reference/v3/reference/shipping/fulfillment-group-label-purchase)` *required*

Where buying the group's label stands.

**linkedGroup** `[FulfillmentGroupLink](/docs/api-reference/v3/reference/shipping/fulfillment-group-link)`

The group this one was merged into, was replaced by, or was copied from. Null when there is none.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**merchantAccountId** `ID`

The account of the store that owns the group.

**notes** `[FulfillmentGroupNotes!](/docs/api-reference/v3/reference/shipping/fulfillment-group-notes)` *required*

Notes on the group.

**orderCreatedAt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

When the group's order was placed.

**originAddress** `[ShippingAddress](/docs/api-reference/v3/reference/shipping/shipping-address)`

Where the group ships from.

**packages** `[OutboundShipmentPackageConnection!](/docs/api-reference/v3/pagination)` *required*

The labels bought for the group, each with its tracking number and tracker. Readable by the store and by the 3PL that ships the group, without pricing.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns packages after it.

**before** `String`

Backward pagination cursor — returns packages before it.

**first** `Int`

Forward pagination: returns the first N packages (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N packages (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**parcels** `[\[FulfillmentGroupParcel!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-group-parcel)` *required*

The parcels the group ships in. Empty for pickup, or before packaging is chosen.

**rates** `[FulfillmentGroupRates!](/docs/api-reference/v3/reference/shipping/fulfillment-group-rates)` *required*

The rates quoted for the group. The store gets no quotes when its 3PL ships the group.

**requestedShipping** `[FulfillmentGroupRequestedShipping](/docs/api-reference/v3/reference/shipping/fulfillment-group-requested-shipping)`

The shipping method the customer chose, from the group's first fulfillment order.

**selectedRate** `[FulfillmentGroupSelectedRate](/docs/api-reference/v3/reference/shipping/fulfillment-group-selected-rate)`

The rate chosen for the label. Null when none is chosen, and for the store when its 3PL ships the group.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**shipments** `[\[CarrierShipment!\]!](/docs/api-reference/v3/reference/shipping/carrier-shipment)` *required*

The carrier shipments bought for the group. Usually one; a group of several parcels on a carrier that labels each parcel separately (e.g. USPS) has one per parcel. Each caller sees the shipments its own team bought, so the store sees none on a group its 3PL ships.

**shippingOptions** `[FulfillmentGroupShippingOptions!](/docs/api-reference/v3/reference/shipping/fulfillment-group-shipping-options)` *required*

Options on buying and delivering the label.

**status** `[FulfillmentGroupStatus!](/docs/api-reference/v3/reference/shipping/fulfillment-group-status)` *required*

Where the group is in its lifecycle.

**tags** `[\[FulfillmentGroupTag!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-group-tag)` *required*

The group's tags.

**totals** `[FulfillmentGroupTotals!](/docs/api-reference/v3/reference/shipping/fulfillment-group-totals)` *required*

What the group's items cost the customer.

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the group last changed.

**nodes** `[\[FulfillmentGroup!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-group)` *required*

The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

**fields**

**addressVerification** `[AddressVerification!](/docs/api-reference/v3/reference/shipping/address-verification)` *required*

Whether the group's addresses were verified.

**fields**

**destination** `[ShippingAddress](/docs/api-reference/v3/reference/shipping/shipping-address)`

The corrected destination address the validation service returned, if any.

**origin** `[ShippingAddress](/docs/api-reference/v3/reference/shipping/shipping-address)`

The corrected origin address the validation service returned, if any.

**verified** `Boolean!` *required*

Whether the destination address was verified.

**assignee** `[TeamMember](/docs/api-reference/v3/reference/common/team-member)`

The team member the group is assigned to. Null when unassigned, or the member isn't on the caller's team.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**fields**

**email** `String`

Email address. Null when the user has none.

**id** `ID!` *required*

m\_us\_… id, the same id the app and MCP tools use.

**name** `String`

Display name. Null when the user hasn't set one.

**supportShiftStatus** `[SupportShiftStatus!](/docs/api-reference/v3/reference/support/support-shift-status)` *required*

The agent's live shift status, worked out when the request runs.

**Requires:** [`support_config_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-support_config_read)

**supportWorkSchedule** `[SupportWorkSchedule!](/docs/api-reference/v3/reference/support/support-work-schedule)` *required*

The agent's support working hours. An agent with no saved schedule returns enabled false.

**Requires:** [`team_members_manage`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-team_members_manage)

**batch** `[FulfillmentBatch](/docs/api-reference/v3/reference/shipping/fulfillment-batch)`

The batch the group's label was bought in. Null before a label is bought, or when the batch isn't the caller's.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**fields**

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the batch was created.

**id** `ID!` *required*

The id of this batch.

**name** `String!` *required*

The batch number shown in the Redo app, e.g. "0030".

**status** `[FulfillmentBatchStatus!](/docs/api-reference/v3/reference/shipping/fulfillment-batch-status)` *required*

Where the batch is in its lifecycle.

**billingAddress** `[ShippingAddress](/docs/api-reference/v3/reference/shipping/shipping-address)`

The order's billing address, if any.

**fields**

**address1** `String`

The first line of the address (street and number).

**address2** `String`

The second line of the address (apartment, suite, unit, etc.).

**city** `String`

The city, town, or village.

**company** `String`

The recipient's company.

**countryCode** `[CountryCode](/docs/api-reference/v3/reference/common/country-code)`

The country.

**email** `String`

The recipient's email address.

**name** `String`

The recipient's name.

**phone** `String`

The recipient's phone number.

**postalCode** `String`

The postal or ZIP code.

**provinceCode** `String`

The state or province code, e.g. CA. Null when the address stores a full name rather than a code.

**residential** `Boolean`

Whether the address is residential. Null when it hasn't been classified.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the group was created.

**customer** `[OrderCustomer](/docs/api-reference/v3/reference/orders/order-customer)`

The customer the group ships to, if known.

**fields**

**email** `String`

The customer's email address.

**firstName** `String`

The customer's first (given) name.

**id** `String`

The customer's id in the source platform.

**lastName** `String`

The customer's last (family) name.

**name** `String`

The customer's full name, when both name parts are set.

**phoneNumber** `String`

The customer's phone number.

**customs** `[FulfillmentGroupCustoms](/docs/api-reference/v3/reference/shipping/fulfillment-group-customs)`

The customs details. Null when the group ships within one country.

**fields**

**comments** `String`

Extra comments for customs.

**contentsExplanation** `String`

A description of the contents, when the type needs one.

**contentsType** `[CustomsContentsType](/docs/api-reference/v3/reference/shipping/customs-contents-type)`

What kind of contents the shipment holds.

**declarations** `[\[CustomsDeclaration!\]!](/docs/api-reference/v3/reference/shipping/customs-declaration)` *required*

The declared items.

**exportFiling** `[ExportFiling](/docs/api-reference/v3/reference/shipping/export-filing)`

The US export filing, when one applies.

**incoterm** `[Incoterm!](/docs/api-reference/v3/reference/shipping/incoterm)` *required*

Who pays duties and import taxes.

**nonDeliveryOption** `[CustomsNonDeliveryOption](/docs/api-reference/v3/reference/shipping/customs-non-delivery-option)`

What happens to the shipment if it can't be delivered.

**deliveryMethod** `[DeliveryMethodKind](/docs/api-reference/v3/reference/shipping/delivery-method-kind)`

How the customer chose to receive the order.

**destinationAddress** `[ShippingAddress](/docs/api-reference/v3/reference/shipping/shipping-address)`

Where the group ships to.

**fields**

**address1** `String`

The first line of the address (street and number).

**address2** `String`

The second line of the address (apartment, suite, unit, etc.).

**city** `String`

The city, town, or village.

**company** `String`

The recipient's company.

**countryCode** `[CountryCode](/docs/api-reference/v3/reference/common/country-code)`

The country.

**email** `String`

The recipient's email address.

**name** `String`

The recipient's name.

**phone** `String`

The recipient's phone number.

**postalCode** `String`

The postal or ZIP code.

**provinceCode** `String`

The state or province code, e.g. CA. Null when the address stores a full name rather than a code.

**residential** `Boolean`

Whether the address is residential. Null when it hasn't been classified.

**events** `[\[FulfillmentGroupEvent!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-group-event)` *required*

What happened to the group, newest first.

**fields**

**actor** `[TeamMember](/docs/api-reference/v3/reference/common/team-member)`

The team member who did it. Null for system events, and when the member isn't on the caller's team.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When it happened.

**type** `[FulfillmentGroupEventType!](/docs/api-reference/v3/reference/shipping/fulfillment-group-event-type)` *required*

What happened.

**fulfillBy** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

When the group must ship by: the merchant's override, else the service-level date.

**fulfillerAccountId** `ID`

The account that ships the group: a 3PL, or the merchant itself, when it equals `merchantAccountId`.

**fulfillmentOrders** `[\[FulfillmentGroupFulfillmentOrder!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-group-fulfillment-order)` *required*

The fulfillment orders the group ships. A merged group spans several orders.

**fields**

**externalId** `String!` *required*

The fulfillment order's id in the sales channel.

**lineItems** `[\[FulfillmentOrderLineItem!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-order-line-item)` *required*

This group's share of the fulfillment order's items.

**order** `[Order](/docs/api-reference/v3/reference/orders/order)`

The Redo order. Null when there is no Redo order, or the caller can't read it, e.g. a 3PL reading its client's group.

**Requires:** [`orders_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-orders_read)

**orderSummary** `[FulfillmentOrderOrderSummary](/docs/api-reference/v3/reference/shipping/fulfillment-order-order-summary)`

The order as it was when it came in, whether or not a Redo order exists. Null when the sales channel sent no order.

**provider** `[CommerceProvider](/docs/api-reference/v3/reference/shipping/commerce-provider)`

The platform the order came from.

**id** `ID!` *required*

The id of this fulfillment group.

**labelPurchase** `[FulfillmentGroupLabelPurchase!](/docs/api-reference/v3/reference/shipping/fulfillment-group-label-purchase)` *required*

Where buying the group's label stands.

**fields**

**errors** `[\[LabelPurchaseError!\]!](/docs/api-reference/v3/reference/shipping/label-purchase-error)` *required*

Why the last purchase failed. Empty unless it failed.

**status** `[LabelPurchaseStatus!](/docs/api-reference/v3/reference/shipping/label-purchase-status)` *required*

Where the purchase stands.

**linkedGroup** `[FulfillmentGroupLink](/docs/api-reference/v3/reference/shipping/fulfillment-group-link)`

The group this one was merged into, was replaced by, or was copied from. Null when there is none.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**fields**

**group** `[FulfillmentGroup](/docs/api-reference/v3/reference/shipping/fulfillment-group)`

The related group. Null when the caller can't read it.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**reason** `[FulfillmentGroupLinkReason!](/docs/api-reference/v3/reference/shipping/fulfillment-group-link-reason)` *required*

How this group relates to the linked group.

**merchantAccountId** `ID`

The account of the store that owns the group.

**notes** `[FulfillmentGroupNotes!](/docs/api-reference/v3/reference/shipping/fulfillment-group-notes)` *required*

Notes on the group.

**fields**

**fromBuyer** `String`

The note the customer left at checkout.

**internal** `String`

The merchant's internal note, never shown to the customer.

**toBuyer** `String`

The note to the customer, printed on the packing slip.

**orderCreatedAt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

When the group's order was placed.

**originAddress** `[ShippingAddress](/docs/api-reference/v3/reference/shipping/shipping-address)`

Where the group ships from.

**fields**

**address1** `String`

The first line of the address (street and number).

**address2** `String`

The second line of the address (apartment, suite, unit, etc.).

**city** `String`

The city, town, or village.

**company** `String`

The recipient's company.

**countryCode** `[CountryCode](/docs/api-reference/v3/reference/common/country-code)`

The country.

**email** `String`

The recipient's email address.

**name** `String`

The recipient's name.

**phone** `String`

The recipient's phone number.

**postalCode** `String`

The postal or ZIP code.

**provinceCode** `String`

The state or province code, e.g. CA. Null when the address stores a full name rather than a code.

**residential** `Boolean`

Whether the address is residential. Null when it hasn't been classified.

**packages** `[OutboundShipmentPackageConnection!](/docs/api-reference/v3/pagination)` *required*

The labels bought for the group, each with its tracking number and tracker. Readable by the store and by the 3PL that ships the group, without pricing.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**fields**

**Arguments**

**after** `String`

Forward pagination cursor — returns packages after it.

**before** `String`

Backward pagination cursor — returns packages before it.

**first** `Int`

Forward pagination: returns the first N packages (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N packages (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**Fields**

**edges** `[\[OutboundShipmentPackageEdge!\]!](/docs/api-reference/v3/pagination)` *required*

The list of edges (each a node plus its pagination `cursor`).

**nodes** `[\[OutboundShipmentPackage!\]!](/docs/api-reference/v3/reference/shipping/outbound-shipment-package)` *required*

The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

**pageInfo** `[PageInfo!](/docs/api-reference/v3/pagination)` *required*

Pagination metadata for the current page.

**parcels** `[\[FulfillmentGroupParcel!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-group-parcel)` *required*

The parcels the group ships in. Empty for pickup, or before packaging is chosen.

**fields**

**dimensions** `[Dimensions](/docs/api-reference/v3/reference/catalog/dimensions)`

The outside dimensions. Null for carrier packaging, which the carrier defines.

**dryIceWeight** `[Weight](/docs/api-reference/v3/reference/catalog/weight)`

The weight of dry ice in the parcel, if any.

**hazmat** `[HazmatType](/docs/api-reference/v3/reference/shipping/hazmat-type)`

The dangerous goods class, when the parcel has one.

**insurance** `[Money](/docs/api-reference/v3/reference/common/money)`

The amount the parcel is insured for. Null when uninsured.

**lineItems** `[\[FulfillmentGroupParcelLineItem!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-group-parcel-line-item)` *required*

What's packed in the parcel. Empty when the items haven't been assigned to parcels, which means everything ships in one box.

**name** `String!` *required*

The packaging's name.

**packagingWeight** `[Weight](/docs/api-reference/v3/reference/catalog/weight)`

The weight of the empty packaging.

**totalWeight** `[Weight](/docs/api-reference/v3/reference/catalog/weight)`

The weight the parcel is rated and labeled at: packaging plus contents.

**type** `[ParcelType!](/docs/api-reference/v3/reference/shipping/parcel-type)` *required*

The kind of packaging.

**weightOverridden** `Boolean!` *required*

Whether a team member set `totalWeight` by hand.

**rates** `[FulfillmentGroupRates!](/docs/api-reference/v3/reference/shipping/fulfillment-group-rates)` *required*

The rates quoted for the group. The store gets no quotes when its 3PL ships the group.

**fields**

**calculatedAt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

When the rates were last calculated.

**errorMessage** `String`

Why rating failed, when `status` is ERROR.

**messages** `[\[OutboundRateMessage!\]!](/docs/api-reference/v3/reference/shipping/outbound-rate-message)` *required*

Carrier messages from rating, e.g. why an account returned no rate.

**quotes** `[\[OutboundRateQuote!\]!](/docs/api-reference/v3/reference/shipping/outbound-rate-quote)` *required*

The purchasable rates. Select or buy one by sending back its carrier, service and `carrierAccountId`.

**status** `[FulfillmentGroupRatesStatus!](/docs/api-reference/v3/reference/shipping/fulfillment-group-rates-status)` *required*

Whether the rates are ready to use.

**requestedShipping** `[FulfillmentGroupRequestedShipping](/docs/api-reference/v3/reference/shipping/fulfillment-group-requested-shipping)`

The shipping method the customer chose, from the group's first fulfillment order.

**fields**

**name** `String!` *required*

The method's name, as the packing slip shows it, e.g. "Standard".

**selectedRate** `[FulfillmentGroupSelectedRate](/docs/api-reference/v3/reference/shipping/fulfillment-group-selected-rate)`

The rate chosen for the label. Null when none is chosen, and for the store when its 3PL ships the group.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**fields**

**carrier** `String!` *required*

The carrier.

**carrierAccountId** `String`

The carrier account the rate is on.

**merchantCarrierAccount** `Boolean`

Whether the rate is on the merchant's own carrier account rather than Redo's, from the group's current quote for it. Null when no quote matches.

**rate** `[Money](/docs/api-reference/v3/reference/common/money)`

The price of the rate, from the group's current quote for the same carrier, service and account. Null when no quote matches.

**selectedBy** `[RateSelection](/docs/api-reference/v3/reference/shipping/rate-selection)`

What chose the rate, when recorded.

**Requires:** [`shipping_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-shipping_read)

**service** `String!` *required*

The carrier service level.

**shipments** `[\[CarrierShipment!\]!](/docs/api-reference/v3/reference/shipping/carrier-shipment)` *required*

The carrier shipments bought for the group. Usually one; a group of several parcels on a carrier that labels each parcel separately (e.g. USPS) has one per parcel. Each caller sees the shipments its own team bought, so the store sees none on a group its 3PL ships.

**fields**

**carrier** `String!` *required*

Carrier the label was bought from.

**landedCost** `[LandedCostQuote](/docs/api-reference/v3/reference/shipping/landed-cost-quote)`

Guaranteed duties, taxes and fees locked for this shipment when it was bought with `landedCost`. Charged with the label, on top of `rate`.

**merchantCarrierAccount** `Boolean`

Whether the label was bought on the merchant's own carrier account rather than Redo's. Null when it wasn't recorded.

**rate** `[Money!](/docs/api-reference/v3/reference/common/money)` *required*

Total price charged for the whole shipment. Carriage only — duties, import taxes, and customs fees are not included.

**service** `String!` *required*

Carrier service level bought.

**shipmentId** `ID!` *required*

The id of this shipment.

**shipmentPackages** `[\[OutboundShipmentPackage!\]!](/docs/api-reference/v3/reference/shipping/outbound-shipment-package)` *required*

The packages and their labels.

**shippingOptions** `[FulfillmentGroupShippingOptions!](/docs/api-reference/v3/reference/shipping/fulfillment-group-shipping-options)` *required*

Options on buying and delivering the label.

**fields**

**billing** `[ShipmentBilling!](/docs/api-reference/v3/reference/shipping/shipment-billing)` *required*

Who pays the carrier.

**notifyCustomer** `Boolean`

Whether the customer is notified when the label is bought. Null uses the store's setting.

**notifyMarketplace** `Boolean`

Whether the sales channel is sent tracking when the label is bought. Null uses the store's setting.

**residentialOverride** `Boolean`

Forces the destination to be rated as residential (true) or commercial (false). Null uses the address's classification.

**returnLabel** `Boolean!` *required*

Whether a return label is bought with the label.

**saturdayDelivery** `Boolean!` *required*

Whether Saturday delivery was requested.

**signature** `[SignatureRequirement!](/docs/api-reference/v3/reference/shipping/signature-requirement)` *required*

Whether a signature is required on delivery.

**specialRates** `[\[SpecialRate!\]!](/docs/api-reference/v3/reference/shipping/special-rate)` *required*

Discounted rate classes the contents qualify for.

**status** `[FulfillmentGroupStatus!](/docs/api-reference/v3/reference/shipping/fulfillment-group-status)` *required*

Where the group is in its lifecycle.

**tags** `[\[FulfillmentGroupTag!\]!](/docs/api-reference/v3/reference/shipping/fulfillment-group-tag)` *required*

The group's tags.

**fields**

**color** `[TagColor!](/docs/api-reference/v3/reference/shipping/tag-color)` *required*

The color the tag is shown in.

**name** `String!` *required*

The tag's name.

**source** `[TagSource!](/docs/api-reference/v3/reference/shipping/tag-source)` *required*

Who added the tag.

**totals** `[FulfillmentGroupTotals!](/docs/api-reference/v3/reference/shipping/fulfillment-group-totals)` *required*

What the group's items cost the customer.

**fields**

**discountedPrice** `[Money](/docs/api-reference/v3/reference/common/money)`

The items' price after discounts.

**price** `[Money](/docs/api-reference/v3/reference/common/money)`

The items' price before discounts.

**tax** `[Money](/docs/api-reference/v3/reference/common/money)`

The tax on the items.

**total** `[Money](/docs/api-reference/v3/reference/common/money)`

What the customer paid for the group, including shipping and tax.

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the group last changed.

**pageInfo** `[PageInfo!](/docs/api-reference/v3/pagination)` *required*

Pagination metadata for the current page.

**fields**

**endCursor** `String`

Cursor of the last edge in this page; pass to `after` to page forward.

**hasNextPage** `Boolean!` *required*

Whether more items exist after this page (drives forward pagination with `first`/`after`).

**hasPreviousPage** `Boolean!` *required*

Whether more items exist before this page (drives backward pagination with `last`/`before`).

**startCursor** `String`

Cursor of the first edge in this page; pass to `before` to page backward.

## Example

```graphql theme={null}
query {
  fulfillmentGroupsSearch(after: "...", before: "...", filter: { ... }, first: 10, last: 10, reverse: true, sort: CREATED_AT, text: "...") {
    nodes {
      createdAt
      deliveryMethod
      fulfillBy
      fulfillerAccountId
      id
      merchantAccountId
      orderCreatedAt
      status
      # ...
    }
    pageInfo { hasNextPage endCursor }
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.