After your Etsy purchase

Upload guide — trip inputs

Everything we need to build your dashboard in one visit to the upload form. One-place (Phase 0) trips skip the itinerary tables. You can still add a custom trip narrative on the form. Use the link from your confirmation email when you have it -- order # and package may already be filled in. Download filled sample forms (one-place and multi-place) if you want to see the fields before you type. Copy the pattern -- never submit sample order 3789123456.

Overview

Your upload journey

flowchart TD
  A[Etsy purchase] --> B[Confirmation email with upload link]
  B --> C[upload.html — one form]
  C --> D[Order # + package tier]
  C --> E[One place Phase 0 or multi-place tables]
  C --> F[Photo .zip]
  C --> G[Optional: custom narrative, placements, passcode]
  D --> H[We package slug.zip]
  E --> H
  F --> H
  G --> H
  H --> I[Dashboard build — 5–7 business days]
  I --> J[Private link via Etsy Messages]
  J --> K[You review --> final delivery]
          

How each photo is included on your dashboard

flowchart TD
  P[Photo in your zip] --> Q{Has GPS location data?}
  Q -->|Yes| R[Included — placed on map near matching stop]
  Q -->|No| S{Listed in photo placements?}
  S -->|Yes| T[We look up your place name on the map]
  T --> U[Included — attached to nearest stop on your route]
  S -->|No| V[Excluded — not shown on dashboard]
          
Not accepted via Etsy messages: photo zips, long itineraries, or PDF/screenshot schedules. Use the upload form (or your email link) so we get structured data.

How to use the sample forms

The samples on sample-forms.html (and in your Etsy download) show which fields to fill and which to skip. They are not a trip you can submit.

  1. Open the one-place sample if you stayed in one town or area. Use the multi-place sample only if you traveled between cities.
  2. Keep it next to the upload form. Prefer the confirmation-email link so order # and package are already filled.
  3. Copy the pattern. Enter your Etsy order number -- never 3789123456 -- plus your destination, dates, and geotagged zip.
  4. For Phase 0: pick One place and skip trip phases and route legs. Optional: a short custom narrative.

Live Phase 0 dashboard: Harpers Ferry weekend.

One-place trips (Phase 0)

A weekend in one town, a residency, or photos from a single area. Pick One place on the form. You do not fill trip phases or route legs. We map geotagged photos as Phase 0 GPS clusters.

Minimum: order #, package, trip title, destination, dates, geotagged zip. Start/end places default to the destination. A custom trip narrative is optional -- we write the Phase 0 card from GPS and place names if you skip it.

Copy this path from the one-place sample. A second Phase 0 pattern (Seoul conference week) is under more test cases.

How we rank your inputs

Your text and placement tables always win over automated guesses. We use geotagged photo timestamps and locations to build a timeline first, then look up city and landmark names on the map where you did not provide them. Photos without GPS need a placement row with a place name (city or landmark) — not exact coordinates.

What takes priority when building your dashboard

flowchart TD
  subgraph trip["Trip story — legs, days, map route"]
    T1["1st — Upload form\nphases + route legs"]
    T2["2nd — Photo GPS timeline\n(sorted by date, grouped by location)"]
    T3["3rd — AI trip plan\n(leg names + title from Mapbox;\nor format your markdown)"]
    T1 --> T2 --> T3
  end

  subgraph pics["Which photos appear"]
    P1["1st — Your photo-placements table"]
    P2["2nd — Automatic GPS match to stops"]
    P3["3rd — Excluded if no GPS and no row"]
    P1 --> P2 --> P3
  end
          
You provideWe use it forRank
Trip phases + route legs + day titlesPhase names, dates, map routeHighest
Photo placements tableNon-GPS images — place name looked up on mapHighest (photos)
Geotagged photo zipStop order, coordinates, map labelsStructure
Waypoint names without coordinatesMap lookup fills Lon/Lat for routesFills gaps
One-place / Phase 0 (destination + geotagged zip)GPS clusters become map pins; optional custom narrative on the phase cardFirst-class path
Custom trip narrative + story voiceYour wording on phase cards — available on one-place and multi-placeOptional, kept

Place names & map lookup

You usually do not need to look up coordinates. Type place names the way you would in a map app.

Good placement examples: Paris, Colmar, Eiffel Tower, Versailles, Richmond, Virginia
Your inputWhat we do
Geotagged photosRead GPS --> group stops --> look up city/landmark names
Photo placement (no GPS)Look up place name --> attach photo to nearest route stop
Waypoint name, Lon/Lat blankLook up place --> fill coordinates for driving route
Trip legs & day titles you wroteAlways kept — automation only fills gaps

Placement rows do not need to match stop names character-for-character. Use the city, neighborhood, or landmark where the photo belongs.

Before you start

ItemRequired?Notes
Etsy order numberYesFrom receipt or confirmation email
Package (Essential / Signature / Legacy)YesMust match the listing you bought
Trip titleYesDashboard headline — e.g. Spring Break 2026
SubtitleNoOptional banner under title — e.g. Dad and Mae
Trip kindYesOne place (Phase 0) or Multi-place
Main destination + datesYesOne-place: the town/area. Multi-place: primary region
Start/end placesMulti-placeOptional on one-place — defaults to destination
Trip phases tableMulti-placeSkipped for Phase 0 — see route table guide
Route legs tableMulti-placeNot required for one-place stays
Custom trip narrativeOptionalYour own story — available on both paths. Story voice, tone, and length are on the same form
Basecamps / overnight staysOptionalExtra lodging detail — skip for transit-only trips
Day-by-day plansOptionalRough daily notes
Photo .zipYesHow to zip geotagged photos
Photo placementsOptionalOnly for images without GPS
Dashboard URL nameOptionalAuto-filled from trip title
Extra notesOptionalFlights, hotels, companions
Dashboard passcodeIf orderedAt least 8 characters

All trip structure is entered on the upload form. One-place (Phase 0) trips skip the phase and route tables. You can still add a custom narrative. Your photo zip should contain photos only.

Your dashboard

Authoritative layout: the live trip page matches templates/index.html and templates/app-template.js in our build. If any description here disagrees with a deployed dashboard, trust what you see on the page.

Dashboard layout (top to bottom)

flowchart TB
  TB["Top bar — trip title, theme toggle"]
  H["Hero — title, optional subtitle, stats row"]
  M["Map — route, photo pins, legend, phase filters"]
  G["Phase cards — grid below the map"]
  TB --> H --> M --> G
          
AreaWhat you see
Top barTrip title only (brand + name) — not the subtitle. Light/dark theme. Iceland trips also show road-condition links.
HeroLarge trip title; optional subtitle below when provided; stats for km mapped, baseline drive time, and phases · dates.
MapFull-width interactive map: colored route by phase, photo pins, legend, All / Phase 1 / … filter buttons.
Phase cardsGrid below the map — click a card or filter button to focus the map on that phase.

Phase card header (colored bar): headline on the left; earliest local sunrise · sunset for that phase’s dates on the right when available.

Headlines: departure transit Phase 1: Depart Mar 10; return transit Phase 4: Return Mar 19–20; stay phases show location only (e.g. Phase 2: Paris, FR) — lodging names appear in the narrative body, not the headline.

Card body: one narrative paragraph per phase (no sunrise/sunset in the text — those appear in the header). Map pins open stop popups with photos; optional passcode gate when ordered.

Upload form fields

Open upload.html. Fields marked required on the form must be filled unless noted.

Upload form layout (top to bottom)

flowchart TB
  subgraph order["1 · Order"]
    O1["Etsy order # — required"]
    O2["Package tier — required"]
  end
  subgraph trip["2 · Trip details"]
    T1["Trip title — required"]
    T2["Subtitle — optional"]
    T3["Main destination — required"]
    T4["Start / end dates — required"]
    T5["Trip kind — one place or multi-place"]
    T6["Trip phases — multi-place"]
    T7["Route legs — multi-place"]
    T8["Custom narrative — optional"]
  end
  subgraph optTrip["Optional trip settings"]
    OT1["Timezone"]
    OT2["Primary travel mode"]
  end
  subgraph itin["3 · Optional on form"]
    I1["Day-by-day plans — optional"]
  end
  subgraph photos["4 · Photos"]
    P1["Photo zip — required"]
    P2["EXIF location consent — required"]
    P3["EXIF time consent — required"]
    P4["Custom dashboard URL name — optional"]
  end
  subgraph extra["5 · Optional extras"]
    E1["Photo placements"]
    E2["Notes"]
    E3["Dashboard passcode — if ordered"]
  end
  C["Confirm paid and Upload trip — required"]
  order --> trip --> optTrip --> itin --> photos --> extra --> C
          

Order reference required

Your Etsy order number. If the order is unknown or already uploaded, the form explains why.

Package required

TierPhotosStopsRevisionsFirst draft
Essential1002015–7 business days
Signature3005025–7 business days
Legacy70010023–5 business days

Form values stay basic / standard / premium so existing orders still match. We do not sell a stand-alone consultation call from this form.

Trip title required

Dashboard headline — the name of the trip (e.g. Spring Break 2026). Also used to suggest your URL slug (mushinsolutions.com/trips/your-trip/).

Subtitle optional

Optional banner line under the title — who traveled (e.g. Dad and Mae, The Johnson family). Leave blank if the trip title alone is enough.

Trip kind required

Pick One place (Phase 0) or Multi-place. One-place: all photos in one town or area — skip the phase and route tables. Multi-place: you traveled between cities.

On either path you can add a custom trip narrative and set story voice, tone, and length. We use your wording on the phase cards.

Main destination, dates, start/end

Primary region (e.g. Paris, France) and first/last day of the trip. Start/end places are required for multi-place trips and optional for one-place (they default to the destination).

Trip phases multi-place

Major blocks — one table row per phase. Pick a label (single location / Phase 0 when all photos are in one area and there is no depart/arrive bookend, transit, basecamp, day trip, residency), then name, dates, and location (location blank for transit). Phase 0 does not need a route leg. If you already have Richmond --> destination (or any bookend), use stay + transit phases instead of Phase 0.

Toolbar: + Add phase · Suggest starter phases (uses trip dates, destination, and basecamp rows if any).

The form stores ### lines behind the scenes. Example serialized output:

### 1 | Departure Transit | Mar 10 | In transit | #0c6fa8

### 2 | Paris Residency | Mar 11–15 | Paris, FR — AirBnB | #148b63

### 4 | Return Transit | Mar 19–20 | In transit | #8f3d97

Actual route / transit legs multi-place

One row per movement — flights, trains, ferries, drives. Pick a Phase on each row from your trip phases table. Use --> for a direct leg or , then for comma-style station chains. Set mode on every non-driving leg.

Full column reference: ROUTE_TABLE_INPUTS.md · click Insert starter legs from trip start/end after start/end places and dates are filled.

Serialized example:

Mar 10 | 1 — Richmond, VA --> Alexandria, VA (train)
Mar 10 | 1 — Washington, DC (DCA) --> Paris, FR (flight)
Mar 11–15 | 2 — Paris --> Colmar (basecamp)

Basecamps / overnight stays optional

Optional extra lodging detail — one row per anchor. Optional detail after :

Paris, FR — AirBnB
La Wantzenau — Omar's house, 24 Rue de Madrid

Transit-only trips can skip this table.

Day-by-day plans optional

One block per travel day:

### <date> | <phase #> | <day title>
What you did or plan to do. Optional: **Drive**: distance and time.

Example:

### 2026-03-12 | 2 | Arrive Paris
Check in Montmartre Airbnb, evening walk.

### 2026-03-13 | 2 | Left Bank & Seine
Classic sights along the river.

Dates can be 2026-03-13 or Mar 13 (include the year somewhere if you use short dates).

Photo zip required

  • One .zip with all trip photos
  • iPhone HEIC and JPEG supported
  • Location Services on when photos were taken — we place geotagged images automatically
  • Visual step-by-step: How to create your photo zip

Dashboard URL name optional

Lowercase letters, numbers, hyphens. Usually auto-derived from your trip title.

Photo placements optional

Open Optional photo fixes on the form when some pictures lack location data (screenshots, exports, Location Services off).

One row per file — use the exact filename inside your zip (e.g. Day2.png, IMG_6261.HEIC).

| Filename | Stop or place | Phase | Day (optional) |
|----------|---------------|-------|----------------|
| Day2.png | Paris — Montmartre | 2 | Mar 13 |
| IMG_6199.HEIC | Colmar — Petite Venise | 3 | 2026-03-16 |

Plain-text alternative:

Day2.png | Paris — Montmartre | phase 2 | Mar 13
IMG_6199.HEIC | Colmar | phase 3 | 2026-03-16
  • Phase = number from your Trip phases
  • Stop or place = city, neighborhood, or landmark — we look it up on the map; exact spelling match to your legs is not required
  • Day = optional but helps group photos on the right travel day

Only list exceptions — geotagged photos are placed automatically. Click Insert starter template on the form for a prefilled table. See also Place names & map lookup.

Custom trip narrative optional

Available on both one-place and multi-place uploads. Write your own trip story, daily notes, or phase-card wording. Set story voice, tone, tense, and length under Optional trip settings. We keep your wording when writing phase cards.

Flight numbers, hotel names, and travel companions can go in the same notes field.

Password protection

If your order includes it, choose a passcode (8–128 characters). Share the dashboard link and passcode separately with viewers you trust.

Trip plan — web form only

Pick One place or Multi-place on upload.html. One-place trips skip the tables. Multi-place trips use Suggest starter phases and Insert starter legs. Optional custom trip narrative is available on both paths.

How your form inputs become the dashboard route

flowchart LR
  A[Upload form\none-place or phases + legs + optional narrative] --> B[trip-plan.md + order.json]
  C[Photo zip] --> D[Intake package]
  B --> D
  D --> E[Dashboard route + days]
          
Form sectionRequired?
Trip kindYes — one place (Phase 0) or multi-place
Trip phases tableMulti-place only
Route legs tableMulti-place only
Custom trip narrativeOptional on both paths
BasecampsOptional

If you have notes in a spreadsheet elsewhere, retype phases and legs into the form tables. Do not submit a separate trip-plan file in your zip instead of filling the form.

Photo zip — requirements

  • At least two geotagged photos, or two placed photos in your placements table, or enough route detail in your trip plan
  • Photos in subfolders inside the zip are fine
  • Do not password-protect the zip file itself

Geotagging on iPhone

  1. Settings --> Privacy & Security --> Location Services — On
  2. Camera — allow location (While Using or Always)
  3. Take photos during the trip — location is stored in the file

What we exclude

SituationResult
Photo has GPSIncluded on map (city name from map lookup)
No GPS + placement rowIncluded — place name looked up, attached to nearest stop
No GPS + no placement rowExcluded
PDF or PNG itinerary screenshotNot read — retype into the upload form
Wrong filename in placementsRow skipped; noted at delivery
Place name not near your routeRow skipped — try a city on your trip

We do not read text inside screenshot images — put place names in the placements table.

After you upload

  1. Form confirms success — we do not send a separate “processing received” email
  2. We build your dashboard (typically 5–7 business days)
  3. Private link arrives via Etsy Messages when ready for review
  4. After you approve, we send final delivery (URL + summary of included/excluded photos)

Troubleshooting

ProblemWhat to do
“Zip too large”Reduce size or upgrade Etsy tier
“Order not found”Check Etsy order #; wait for confirmation email
Photos missing on mapConfirm GPS was on, or add placement rows with a city/landmark
Placement row skippedMatch filename exactly; use a place on your route (e.g. Paris)
Screenshot itinerary ignoredRetype schedule into phase + route tables on the form
Wrong packageSelect tier matching your Etsy listing
Passcode rejectedUse at least 8 characters