Brand portal · Campaign timeline tile · Oct 5, 2026

The tile that moves: the Campaign timeline at every stage, early and late

Julia, Oct 5: the tile "should dynamically update the numbers if things come earlier", then "let's keep C and H, so now think through every single stage of the campaign and what it should look like, and every edge case, including early and late", and "including the stragglers at the very end of campaign, but don't want to draw too much attention to those."

So this page now does three things. It shows the one tile that was kept, live. It walks that tile through every stage of a campaign in three columns: early, on plan, late. And it lists the edge cases with what the tile does in each.

What is decidedThe tile, liveEvery stageThe words on the tileThe ruleEdge casesConsidered and droppedOpen questions

What is decided

Julia, Oct 5, after the first pass of this page: "let's not do quiet late move then if the delay is on creators' side? If it's because the brand has yet to review I'm ok with that. We can just have the old date crossed in small and the new date normal."

The tile: new date, old date crossed out, an "Early" tagVersions C and H of the first round, which are the same tile. Julia · Oct 5
Only the front moves, on the first creatorOne creator being early moves "first content expected". It never moves the end of a phase or of the campaign. On a big campaign the tag will show almost every time, and that is fine. Julia · Oct 5
Early says nothing moreThe tag is the whole message. No green line under the date explaining why. Julia · Oct 5
Late on the brand's side: the date movesNew date at normal size, no tag, and one amber line saying what is ready for them. The old date shows small and crossed out, but only up to Film: once filming starts the tile just shows the new date. It shows again while a draft waits on the brand's own review. Julia · Oct 5
Late on the creators' side: the date holdsNo move and nothing crossed out. At most one grey line saying where things are. Julia · Oct 5
Windows overlap, and review is 3 business daysThe phases in the full timeline are wider and overlap: filming opens 6 days after shipping starts, and review opens 10 days after filming and runs on while posts go live. Each draft is reviewed within 3 business days. When the brand does the final review, that is 3 business days for Katie's team and then 3 for the brand. These numbers are internal and are not shown; the Review row says feedback is given. Julia · Oct 5
Now can sit on two phasesWhen some creators are filming and others are in review, both rows are marked Now. The date and the tag still follow the first creator. Julia · Oct 5
Stragglers stay quietAfter week 8 the tile says "8 of 10 posts live." and nothing more. The team's follow-up on the last two is logged but not shown anywhere. Julia · Oct 5

The tile, live

Campaign 1, launched Sep 10 with 10 creators. Planned: creators accepted by day 7, first order delivered by day 21, first draft by day 35, first post by day 42 (the week of Oct 19), last posts by day 56 (Nov 4). In the full timeline the phases overlap: filming opens 6 days after shipping starts, review 10 days after filming opens. Pick what happens, then drag the day or press play.

The tile

With the full timeline open

The same date on the overview card

Every stage

Each tile below is drawn by the same rule as the live one, frozen on one day of one campaign. Read across: the same stage when things came early, on plan, and late. Late has two kinds: the brand's side, where the date moves, and the creators' side, where it holds.

The words on the tile

First the label above the date, then the one line that can sit under it.

WhenLabelValue
Before the first postFirst content expectedWeek of Oct 19Tony · Sep 8
After the first postFirst content landedOct 22Julia · Oct 5
Every post is liveAll 10 posts are liveNov 4Julia · Oct 5
The campaign is complete(none)Campaign completeJulia · Oct 6

The line under the date

One line, at most, and only when something is later than planned. Having grey and amber lines is decided (Julia, Oct 5: "grey lines ok", "yes amber"). The wording went through the copy desk on Oct 5 and Julia signed it off on Oct 6 Julia · Oct 6; "First content expected" is the label already agreed (Tony, Sep 8).

ToneWhenThe lineThe date

No line at all is the normal state: a campaign that is on plan or early shows the date and nothing under it.

There is no green line. An early date carries the Early tag and nothing else: the line "The first order was delivered 7 days early." was removed. Julia · Oct 5

* This one says the team is doing something, so it only shows when the log backs it up.

The team's check-ins and follow-ups are logged but never shown on the tile. "Katie's team is checking in with your creators." and "Katie's team is following up on the last 2." were removed. Julia · Oct 5

Amber never says "waiting on you" (cut as a nag in earlier rounds). It gives the count and what is ready.

The rule

The date, in words

  1. The plan counts days from launch: creators accepted by 7, first order delivered by 21, first draft in by 35, first post live by 42, last posts by 56.
  2. Each step is about the first creator to get there, because the tile is about first content.
  3. Early: when the first order, the first draft or the first post lands early, "first content expected" moves earlier by the same number of days. Creators accepting early does not move it: nothing has shipped yet. Julia · Oct 6
  4. Late on the brand's side: every day the brand holds a step past its time is added to the date. Three steps can be theirs: approving creators (7 days from launch), shipping their own orders (14 days from acceptance), reviewing their own drafts (3 business days for Katie's team to pre-check, then 3 business days for the brand; once they are past those, every day the draft has been with them counts). The date stays moved after they act.
  5. Late on the creators' side (or ours, or the carrier's): the date holds. Nothing on this side ever moves it later.
  6. The tag shows when the week on the tile is earlier than the week promised at launch. There is no opposite tag.
  7. The crossed-out date shows with the tag whenever the week is earlier. When the brand's delay made it later, it shows up to Film: once the first order is delivered, the tile just shows the new date. It shows again while a draft waits on the brand's own review.
  8. After the first post the tile states the fact and counts posts. After the last one it says so. Julia · Oct 5
  9. Complete: once the campaign is completed, the tile reads "Campaign complete", with no date, and the post count under it. A campaign completes on its own 7 days after every post is live, when every creator is thanked, or when the team completes it by hand. Julia · Oct 6
  10. A brand step held more than 4 weeks: the card stops giving a date and says what first content waits for, for example "5 weeks after you approve your creators", with the amber line under it. Katie's team is flagged at the same point. From 6 weeks past the step, the overview card drops the week number too ("Week 19" made no sense) and shows only the amber line. Julia · Oct 6
  11. The overview card shows the card's own line in place of the date once the promised week has passed, or once there is no date: "Week 7 of 8 · Katie's team is reviewing the first draft". Julia · Oct 6
  12. Past week 8 with posts missing: the bar is full and Post stays marked Now until the campaign completes. Julia · Oct 6

The full timeline, in words

  1. Windows overlap. A phase opens when its first creators can start and closes on the plan's end, so some creators film while orders are still arriving, and reviewing starts while others film.
  2. A start follows the first creator when they get there before the planned opening. Then the row says "Started 4 days early."
  3. An end never moves earlier. It moves later only by the brand's own days.
  4. Review is 3 business days per draft, as an internal rule. The brand never sees the number. The Review row only says feedback is given: "Katie's team sends each creator feedback on their draft." When the brand does the final review the row reads "Katie's team pre-checks each draft, then you approve it or send feedback." and the allowance is 3 business days for Katie's team plus 3 for the brand. The forecast keeps 7 days from first draft to first post: 3 business days to review, then the creator posts.
  5. Now can be on more than one row: the furthest phase the first creator has reached, plus any earlier phase whose window is still open. When a window closes its Now goes, so one creator still filming in week 7 does not keep Film lit. Julia · Oct 5
# the plan, in days from launch
PLAN    = { accepted: 7, delivered: 21, first_draft: 35, first_post: 42, last_post: 56 }
REMAIN  = { accepted: 35, delivered: 21, first_draft: 7, first_post: 0 }    # days to first content
ALLOWED = { accepted: 7.days, delivered: 14.days, first_draft: 14.days,
            review: 3.business_days }   # + 3.business_days when the brand does the final review
# reached_on(step) = the day the FIRST creator got there

# 1. days lost while the ball was with the brand
brand_delay = 0
for step in [accepted, delivered, first_post] when the brand owns it:
  # owns = approves its creators / ships its own orders / reviews its own drafts
  due          = [PLAN[step] + brand_delay, reached_on(previous step) + ALLOWED[step]].max
  brand_delay += [(reached_on(step) || today) - due, 0].max

# 2. the realistic date, from the first creator
latest    = last of [delivered, first_draft] reached     # accepted never pulls the date earlier
base      = latest ? reached_on(latest) + REMAIN[latest] : [42, reached_on(:accepted) + 35].max
floor     = today + REMAIN[next step not yet reached]
realistic = [base, floor].max

# 3. what the tile shows: early pulls it in, only the brand pushes it out
first_content_expected = first_post_reached ? reached_on(:first_post)
                                            : [realistic, 42 + brand_delay].min
early       = monday(first_content_expected) < monday(launch + 42)    # the tag
crossed_out = early || (later && (first order not delivered yet       # up to Film
                                || a draft waits on the brand))     # and during their review

# 4. the full timeline: windows overlap
opens = { ship: creators accepted, film: ship.start + 6, review: film.start + 10,
          post: first_content_expected }                 # + the brand's days on that step
phase.start = [reached_on(first creator), opens[phase]].min
phase.end   = planned_end + brand_delay so far           # 7, 21, 35, 49, 56
now(phase)  = phase is the furthest reached || (reached && today < phase.end)

The windows, on plan

PhaseOpensClosesLaunch Sep 10
MatchLaunchDay 7Sep 10 to 16
ShipCreators accepted, day 7Day 21Sep 17 to 30
Film6 days after shipping opens, day 13 Julia · Oct 5Day 35Sep 23 to Oct 14
Review10 days after filming opens, day 23 Julia · Oct 5Day 49 Julia · Oct 5Oct 3 to 28
PostFirst content expected, day 42Day 56Oct 22 to Nov 4

Before this round the windows did not overlap: Film Oct 1 to 14, Review Oct 15 to 21 (7 days). Film and Review now open earlier, and Review closes a week later, on Oct 28, so that it overlaps Post (Julia, Oct 5: "post can overlap with review", and the Oct 28 close confirmed the same day). "Started 4 days early." is measured against these openings, so it shows less often than before; that is accepted too. Post still opens on the day first content is expected, so the Post row never starts before the date on the tile.

What Nisarg needs from the data

Four dates per campaignThe first creator accepted, the first order delivered, the first draft submitted, the first post live.
CountsCreators on the campaign, posts live, and how many creators are in each stage (for Now on two rows).
Three flagsWho approves creators, who ships (Shopify or the brand), who reviews drafts (Benable or the brand). They decide whether the date moves, not only the colour of the line.
Where it showsThe tile, the full timeline inside it, and the campaign card on the overview. One computed value feeds all three.

What does not change

The 6-week promise for first content (confirmed by Julia on Oct 5: review at 3 business days does not shorten it) and the campaign's month name, frozen at launch. "Week 4 of 8" stays a calendar count. Local and gift card campaigns have no tile.

Edge cases

CaseWhat the tile does
Timing
Early by a few days onlyThe date is shown by week, so a small gain often stays in the same week. No tag, no crossed-out date: the tile does not change.Julia · Oct 5
A small gain flips the weekA gain of 4 days can move the Monday. The tag says "Early" and nothing about how much, so it never overstates.Julia · Oct 5
The expected week is the current weekThe tile keeps its format: "Week of Oct 19". "This week" was considered and dropped at the copy desk: it reads as a promise, and it would not match the crossed-out date beside it.Julia · Oct 5
The expected week ends with nothing liveBrand's side alone: cannot happen, the date moves with every day they take. Creators' side: the tile keeps the planned week after it has ended, and always carries one grey line in that state. On the overview card the line takes the place of the date: "Week 7 of 8 · Katie's team is reviewing the first draft". This is the only time the tile shows a week that has gone.Julia · Oct 5
Early, then the next step is slowThe gain drains away day by day, back to the planned week, and stops there. The tag and the crossed-out date leave when it gets there. Scenario "Early, then filming drags".Julia · Oct 5
A brand delay, then a fast stepThe date comes back earlier. The crossed-out date leaves if it returns to the week promised at launch.Julia · Oct 5
The date moved laterOnly the brand can cause it. New week at normal size, no tag. The old date, small and crossed out, shows up to Film; once filming starts it goes and the tile just shows the new date. It shows again while a draft waits on the brand's own review. Amber line while they hold a step, grey line once they have acted.Julia · Oct 5
Month nameFrozen at launch, even when first content now lands a month earlier or later.Julia · Oct 2
"Week 4 of 8"A calendar count from launch. Early and late change dates, never the week number.Julia · Oct 5
MidnightDates change at midnight in the brand's time zone (the one the cadence already uses), not the browser's.Julia · Oct 5
Who we are waiting on
The brand has not approved its creatorsAmber: "10 creators are ready for your review." The date moves a day for every day past day 7.Julia · Oct 5
A brand step held more than 4 weeksThe date stops: "5 weeks after you approve your creators", "3 weeks after the first order is delivered", or "Once you approve the first draft", with the amber line under it and no crossed-out date. The overview card reads "Week 6 of 8 · 5 creators are ready for your review". From 6 weeks past the step it drops the week number and reads "5 creators are ready for your review". Katie's team is flagged at 4 weeks.Julia · Oct 6
The brand ships its own orders and has not shippedAmber: "10 orders are ready for you to ship." The date moves.Julia · Oct 5
The brand reviews its own drafts and one is waitingAmber: "1 draft is ready for your review." The brand gets 3 business days after Katie's team's 3-business-day pre-check. Past that, and past day 42, the date moves to today and keeps moving, and the old date shows crossed out while the draft waits. The amber line can show a little earlier, as soon as the draft is with them and the promised week is at risk.Julia · Oct 5
Matching is still on us after week 1Grey: "Katie's team is filling the last spots." The date holds.Julia · Oct 5
The carrier is slowGrey: "The first order is on its way." Only once an order has actually shipped. The date holds.Julia · Oct 5
No draft after the filming windowGrey: "Your creators are filming." The date holds. The team's check-ins are logged but not shown.Julia · Oct 5
A draft is in review, or was sent back for a changeGrey: "Katie's team is reviewing the first draft." The date holds.Julia · Oct 5
Approved but not posted yetGrey: "First draft approved, posting next." The date holds.Julia · Oct 5
Both sides are lateOnly the brand's days are added. If creators accept 5 days late and the brand then ships 4 days past its own 14, the date moves 4 days, not 9.Julia · Oct 5
Several phases at once
Some creators are filming while others are in reviewBoth rows are marked Now and both names are bold on the tile's bar. The date and the tag follow the first creator.Julia · Oct 5
A window is open but nobody is in it yetNo Now. Film shows Sep 23 to Oct 14 from launch, but it is only marked Now once the first order is delivered.Julia · Oct 5
One creator is still filming in week 7Film's window closed on Oct 14, so Film is no longer marked Now. That creator is part of the quiet tail.Julia · Oct 5
Nobody has moved on and the window has closedThe furthest phase reached is always Now, even past its window, so the tile never shows no Now at all before the campaign ends.Julia · Oct 5
A draft waits longer than 3 business daysOn our side: nothing on the tile until first content would slip past the promised week, then one grey line. On the brand's side, after their own 3 business days: amber, and the date moves.Julia · Oct 5
The end of the campaign
Every post is live before week 8 ends"All 10 posts are live · Oct 24" with the Early tag.Julia · Oct 5
The brand's delay moved the dateEvery later end date, and the end of the campaign, moves later by the same days.Julia · Oct 5
Creators ran lateThe end of the campaign holds at the plan. Posts that land after it are the quiet tail.Julia · Oct 5
Stragglers after week 8The tile says "8 of 10 posts live." and Post stays marked Now (Julia, Oct 6). No amber, no count of what is missing. The full timeline's last row says "Any last posts go live." The follow-up is logged but not shown.Julia · Oct 5
A straggler never postsThe tile keeps "9 of 10 posts live." for as long as the campaign is open. It never turns into a warning. When the team completes the campaign, the tile reads "Campaign complete" with "9 posts live." When and how the team decides to complete it is the NPS study's question, not the tile's.Julia · Oct 6
The first post goes live, then nothing for weeks"1 of 10 posts live." The date on the tile is a fact by then and does not move.Julia · Oct 5
The campaign is completeThe tile becomes the record: "Campaign complete", no date, with "All 10 posts are live." or "8 posts live." under it. Nothing is marked Now and the "After week 8" row is gone. The overview card reads "8 live · campaign complete". The word is "complete" with no date; "closed" is never used.Julia · Oct 6
Completed by hand with no post live"Campaign complete" and nothing under it, because the tile never shows a zero. The overview card reads "Campaign complete".Julia · Oct 6
Every post is live and nobody completes itThe campaign completes on its own 7 days after its last post. Production today completes a campaign only when every creator is thanked, or by hand, so campaigns where the brand never thanks stay active for months. A campaign with posts still missing never completes on its own.Julia · Oct 6
People
The first creator stalls or drops outThe date they earned drains back toward the plan until someone else reaches the next step.Julia · Oct 5
A replacement joins in week 3They run on their own clock. Nothing on the tile moves for them and the end of the campaign stays where it is. Their post lands in the quiet tail.Julia · Oct 6
A creator drops out and is not replacedCounts are out of the creators on the campaign at that point, so "9 of 10 posts live." becomes "9 of 9" and then "All 9 posts are live".Julia · Oct 6
A campaign of 100 creatorsThe first creator anchors every step, so the Early tag will show on almost every big campaign. That is fine.Julia · Oct 5
Campaign state and data
PausedNo line and no rule. The backend has a "paused" campaign status, but a brand cannot pause or resume a campaign today: the only thing that sets it is an automatic Shopify data-removal request. If a pause control is ever built, this needs deciding then.Not in this build
No delivery signalA brand that ships without tracking gives us no delivery date. That step is skipped: the date can next move when the first draft comes in, and a late shipment cannot be counted against the brand.Nisarg
RolloutThe moving tile launches for new campaigns only, plus Pair. Every other campaign already running keeps today's tile.Julia · Oct 5
Before the Dashboard existsIn week 1 the campaign page is still the launch confirmation. Its timeline card is static: nothing has happened that could move a date.Julia · Oct 5
Local and gift card campaignsNo tile (months are product only).Julia · Oct 1

Considered and dropped

VersionWhy it is out
Plan only (today's tile)Right at launch and never again. It undersells every campaign that runs fast.
Quiet swap, no traceHonest but the good news is easy to miss. Still the smallest first build: the kept tile is this plus a tag.
"7 days ahead" chip on an unchanged dateJulia liked the chip with the word Early instead. That became the tag.
"Week 3 of 7"The end of the campaign does not move when a creator is early, so there is nothing to shrink.
Countdown ("in 9 days")Changes every day by itself, so a real jump is invisible.
Tag in the card head, tinted card, tick on the line, its own tileAll further from the date than the tag beside it.
"1 week early" on the tagCan overstate: the date is shown by week.
A green line under the date saying why"The first order was delivered 7 days early." Removed by Julia, Oct 5. The tag is enough.
Every delay moves the date later, quietlyThe first pass of this page: any late step moved the date, with nothing crossed out. Dropped by Julia, Oct 5: a delay on the creators' side must not move the date, and when the brand's delay moves it, the old date is shown crossed out.
"Within 3 business days" in the Review rowRemoved by Julia, Oct 5. The 3 business days stay as an internal rule; the row does not mention them.
Lines about the team's follow-ups"Katie's team is checking in with your creators." and "Katie's team is following up on the last 2." Hidden by Julia, Oct 5: the follow-ups happen and are logged, the tile does not show them.
"Paused Oct 3. The date updates when you resume."Removed Oct 5. It promised a resume the brand cannot do: there is no pause control in the portal.
A "Late" tagNever. Late is carried by the date and one grey or amber line.

The first round, with every version live, is kept at round1.html.

Still worth doing with no build: Katie's team says it in the weekly text. "Good news, the first order arrived early, so first content is now expected the week of Oct 12."

Open questions

QuestionWhat the study assumesWho
What production shows todayThe months work shipped on Oct 5. Its timeline card is the static 8 weeks with the old phases (Match 1, Ship 2 to 3, Film 4 to 5, Review 6, Post 7 to 8). This study is the change on top of it.Nisarg
Can the moving tile be in Preview for all brands?Asked by Julia on Oct 5. It launches for new campaigns and Pair only.Nisarg
Do we store the day each creator reached each step?Yes, since the Dashboard's stage history shows dates. To confirm.Nisarg
Brands that ship without trackingNo delivery date, so that step is skipped and a late shipment cannot move the date.Nisarg