SellubPlatform AdminDelivery Sources

Delivery Sources (SuperAdmin)

Platform-level registry of delivery carriers. Sellers opt into these sources and configure their own pricing per destination via the seller dashboard.

Open Settings → Delivery Sources.

Source types

TypeOwnerVisible to
PlatformSellubAll sellers
Partner3rd party (e.g. DHL)All sellers
SellerA specific sellerOnly that seller (created from the seller dashboard)

Use Platform / Partner for carriers you negotiate centrally and want available to every seller. Sellers create their own “seller” sources from their own dashboard for in-house couriers.

Pricing models

The pricing model is informational metadata; actual price calculation is driven by the rate rows sellers configure. Supported values:

ValueWhen to use
flatSingle price regardless of destination
regionalPer-region/city price (the default)
origin_destinationDifferent price per (origin, destination) pair
distanceCalculated from km (requires distance API integration)
weightCalculated from package weight

Today only flat and regional are wired into the calculator. origin_destination is supported via the precedence cascade — pick this when sellers will configure rates with different pickup cities. distance and weight are reserved for future calculators.

Required fields

  • Code: lowercase URL-safe identifier (ghana_post, dhl_express). Cannot be changed after creation.
  • Name: customer-facing display name.
  • Type: platform / partner / seller.

Optional fields

  • Description, website URL, logo URL, contact phone/email.
  • Webhook URL + secret — for carrier integrations that POST tracking updates back to Sellub.
  • Sort order — lower numbers appear first in dropdowns.
  • Active toggle — inactive sources are hidden from sellers but existing rates referring to them remain.

Lifecycle

  • Create: SuperAdmins only.
  • Update: SuperAdmins (or the owning seller for seller-type sources).
  • Delete: SuperAdmins only.

Deleting a source orphans any rates referencing it; sellers will need to re-attach their rates. Prefer deactivating instead of deleting if the carrier is just temporarily unavailable.

GraphQL surface

type DeliverySource {
  id: ID!
  code: String!
  name: String!
  type: String!          # platform | seller | partner
  pricingModel: String!  # flat | regional | origin_destination | distance | weight
  description: String
  websiteUrl: String
  logoUrl: String
  contactPhone: String
  contactEmail: String
  webhookUrl: String
  ownerSellerId: ID
  isActive: Boolean!
  sortOrder: Int!
  createdAt: DateTime!
  updatedAt: DateTime!
}
 
# Queries
deliverySources(includeInactive: Boolean, type: String): [DeliverySource!]!
deliverySourcesForSeller(sellerId: ID!): [DeliverySource!]!
deliverySource(id: ID!): DeliverySource
 
# Mutations (SuperAdmin)
createDeliverySource(input: CreateDeliverySourceInput!): DeliverySource!
updateDeliverySource(id: ID!, input: UpdateDeliverySourceInput!): DeliverySource!
deleteDeliverySource(id: ID!): DeleteResult!

Customer-facing impact

At checkout, the customer sees one option per (seller, source) combo. The source’s name is rendered as via {Source name} under the seller name.