Valikko

This page exists in one language only. Some pages here are English, some Swedish.

Campaigns & PRM

Campaigns and Partner Relationship Management (PRM) are the tools you use to activate your retailer network. Campaigns send co-marketing proposals to retailers and collect their responses. PRM organises retailers into named tiers with published benefits. This guide is for supplier admins. It covers creating and sending campaigns, tracking responses, campaign links, tiers and benefits, and one-to-one messaging with retailers.

Plan requirements

Campaigns and PRM are included from the Pro plan. Messaging is included from Growth. The 90-day trial includes all three. On a plan below the requirement the pages show an upgrade prompt and the API returns 403. See Plans & billing.


Roles and access

  • SupplierAdmin: full access. Create and send campaigns, advance status, manage tiers, assign retailers, start message threads.
  • SupplierViewer: read-only access to the campaign list and campaign detail. No access to tiers.
  • RetailerAdmin: the retailer side. View the campaign inbox, respond to invites, view assigned tiers, and reply to messages.

Every supplier's data is tenant-isolated. You only ever see campaigns, tiers, and threads that belong to your own account.


Campaigns

A campaign is a supplier-initiated co-marketing proposal. You describe what you want to run, send it to selected retailers, and each retailer accepts or declines from their own inbox.

Campaign lifecycle

StatusMeaning
DraftCreated but not yet sent. No invites exist.
SentInvites have been created for the targeted retailers.
ResponsesInRetailers are responding.
ActiveThe campaign is running.
CompleteThe campaign has finished.
CancelledYou cancelled the campaign.
NegotiatingInbound retailer proposals only: terms under discussion.
DeclinedInbound retailer proposals only: you declined it.

A new campaign starts in Draft. Sending it moves it to Sent. From there you advance it by hand. Status only moves forward, and Complete, Declined, and Cancelled are final. Campaigns whose end date has passed are closed by a background sweep.

Status is a label, not automation

Advancing status beyond Sent does not send anything. It only updates the label on your campaign card. Use it to track where each campaign stands.

Creating a campaign

Open Campaigns (/campaigns) and create a campaign. The required fields are:

  • Name: shown on the invite and on the campaign card.
  • Description: the full description of the campaign.
  • Participation ask: exactly what you want retailers to do (for example: feature a display, run a promotion).
  • Start date and End date: the end date must be after the start date.

Optional fields include asset URLs, a budget and currency (defaults to SEK), a discount percentage, brands, categories, and an objective.

The campaign is created in Draft. At this point no retailer has been contacted.

POST /api/v1/campaigns

The proposal wizard

For a structured proposal, use the wizard at /proposals/new. It walks through four steps: Targeting, Creative assets, Budget & schedule, and Review & send. The last step creates the campaign and sends it in one go. Proposals you have sent are listed under /proposals, with a detail panel for overview, responses, and conversation.

Sending a campaign

Sending a campaign creates one invite per targeted retailer and moves the campaign to Sent. You can target by:

  • Retailers: specific retailers.
  • Groups: every retailer in each selected group.
  • Tiers: every retailer assigned to a selected PRM tier.
  • Regions: every retailer in the selected region codes.

You must supply at least one target. All selections are combined into a single de-duplicated recipient list, so a retailer who matches twice is invited once. Sending the same campaign again only creates invites for retailers who do not already have one. Existing invites are never reset.

POST /api/v1/campaigns/{id}/send/preview   → count the recipients first
POST /api/v1/campaigns/{id}/send

Use groups to keep targeting maintainable

Build retailer groups once (see the Retailer network guide) and target campaigns by group. As you add retailers to a group, future sends pick them up. No need to re-select individuals each time.

Invited retailers see the invite in the campaign inbox of their own admin.

Tracking responses

The campaign list and the campaign detail both report aggregate counts:

  • Invite count: total invites created for the campaign.
  • Accepted count: retailers who accepted.
  • Declined count: retailers who declined.
  • Pending count: retailers who have not yet responded.

Open a campaign's detail to see the per-invite list: each retailer's response status, their optional note, when they were invited, and when they responded.

GET /api/v1/campaigns            → list with aggregate counts
GET /api/v1/campaigns/{id}       → detail with full invite list

How retailers respond

From the retailer side, a RetailerAdmin sees a campaign inbox and responds to each invite:

  • Accepted or Declined, with an optional note.
  • An invite can be answered once. After that it is locked.
  • Invites cannot be answered after the campaign's end date.
GET  /api/v1/campaigns/invites                       → retailer inbox
POST /api/v1/campaigns/invites/{inviteId}/respond    → accept or decline

As soon as a retailer responds, the counts on your campaign update.


Campaign links

Campaign links (/campaign-links) builds a where-to-buy landing URL for a campaign: your locator, a product, and the utm_* tags in one link. Paste it into ads, newsletters, or partner pages. The Campaign traffic readout on the same page shows what each link brings in, and the same UTM tags ride along on every CTA click the link produces. See the Analytics & attribution guide.


Partner Relationship Management (PRM)

PRM lets you define tiers for your retailer network and publish a list of benefits for each tier. Assign retailers to a tier, and each retailer sees their tier and its benefits in their own admin. Tier names are up to you: Gold, Silver, and Bronze are common, but any name works.

Manage tiers under Tiers (/tiers).

Tiers and benefits

A tier has:

  • Name: for example "Gold".
  • Description: optional text shown to assigned retailers.
  • Sort order: lower numbers appear first.
  • Benefits: an ordered list of benefit lines (for example "Priority lead routing", "Co-op marketing fund"). Benefits display in the order you list them.

Tier limit

You can define up to 10 tiers. Creating an 11th is rejected.

Updating and deleting tiers

Updating a tier replaces its name, description, sort order, and its entire benefit list. Any benefit you omit is removed. Deleting a tier shows a preview of the retailers it affects before you confirm.

GET    /api/v1/prm/tiers          → list your tiers (with benefits and assignment counts)
POST   /api/v1/prm/tiers          → create a tier
PUT    /api/v1/prm/tiers/{id}     → update a tier (replaces all benefits)
DELETE /api/v1/prm/tiers/{id}     → delete a tier

Assigning retailers to a tier

Click Assign retailer on a tier. Two rules apply:

  • An active connection must exist. You can only assign retailers you are connected to.
  • One tier per retailer. Assigning a retailer who is already on another of your tiers moves them. The previous assignment is closed automatically.
POST   /api/v1/prm/tiers/{id}/relationships/{relationshipId}/assignment    → assign
DELETE /api/v1/prm/tiers/{id}/relationships/{relationshipId}/assignment    → unassign
GET    /api/v1/prm/tiers/{id}/assignments                                  → list a tier's retailers

What the retailer sees

A RetailerAdmin sees My tier status: every tier they have been assigned to across the suppliers they work with, with the supplier's name and the benefit list.

GET /api/v1/prm/my-tiers

Benefits are your value proposition

Retailers see the benefit list you publish for their tier. Make each benefit concrete. This is what motivates retailers to engage with your campaigns and move up a tier.


Messaging

Messages (/messages) holds one-to-one threads between you and an individual retailer. A thread is always between exactly two parties: your account and one retailer's account. The retailer answers from the Inbox in their own admin.

Starting a thread

Only a SupplierAdmin can start a thread, and only with a retailer you are connected to. A thread needs a subject and a first message.

POST /api/v1/messaging/threads
{ "retailerId": "...", "subject": "Spring campaign artwork", "firstMessage": "..." }

Replying and reading

Once a thread exists, either side can post messages and read the conversation. Posting a message moves the thread to the top of the list.

GET  /api/v1/messaging/threads                   → list your threads
GET  /api/v1/messaging/threads/{id}              → thread detail
GET  /api/v1/messaging/threads/{id}/messages     → paginated messages (page, pageSize)
POST /api/v1/messaging/threads/{id}/messages     → post a message
PUT  /api/v1/messaging/threads/{id}/read         → mark the thread read
GET  /api/v1/messaging/threads/unread-count      → unread badge count
  • The thread list shows a preview of the last message and an unread count per thread.
  • A thread counts as unread when its newest message came from the other party and you have not opened it since.
  • Messages are paginated. The default page size is 20 and the maximum is 100.

No email notifications yet

Stockisto does not email you or the retailer about new messages today. The Messages page refreshes on its own every 30 seconds and shows the unread count per thread.


Where to go next

cebf50c · 2026-10-05 22:57