What you get
RemixCRM's Music Planner is a collaborative playlist builder that lets your client co-curate the music for their event. You send them a unique link, they search Spotify and add songs into pre-built sections ("Cocktail Hour", "Dinner", "First Dance", "Open Dancing", etc.), and you see their picks in real time.
Spotify powers two things:
- Song search for every visitor to the planner page — searching Spotify's catalog of 100M+ tracks, with album art and 30-second previews
- Playlist import — clients who connect their own Spotify can pull in their existing playlists ("here's our pre-wedding hype mix")
The actual music files aren't played at the event — you (the DJ) use the song list as your prep document, then run the show from your own DJ software (Serato, rekordbox, etc.).
How it works for the DJ (you)
1. Create a planner
- Open an event
- Music tab
- Click Create music planner
- RemixCRM picks a default template based on the event's type and builds sections accordingly (Wedding, Bar/Bat Mitzvah, Sweet Sixteen, Quinceañera, School Dance / Prom, Birthday / Private, Corporate, Holiday Party, Anniversary, Graduation, Live Request List)
- The Event template picker at the bottom of the planner header shows every template — click another one to switch. If the planner already has songs, RemixCRM confirms before deleting them.
- Optionally write a custom message that appears at the top of the client's planner
2. Share the link with your client
The planner page lives at:
https://app.remixcrm.com/plan/<unique-token>
The token is a random 48-char string — long enough that no one can guess it. The link is public (no login required) but unguessable.
Send it to the client however — email, text, contract attachment.
Optionally, RemixCRM can auto-send the planner link in the same email as the signed contract. Set this when creating the planner.
3. Watch picks come in
As the client adds songs, your Music tab updates with the live count ("47 songs across 6 sections"). Refresh anytime to see the latest.
4. Export the planner
Four export options live next to the planner header on the event Music tab:
- CSV — full song list with Spotify URL and Spotify URI columns, client notes, DJ notes, durations, and section
- PDF — formatted prep doc grouped by section
- M3U8 — universal playlist file containing
spotify:track:<id>URIs, drag-droppable into Serato, rekordbox, VirtualDJ, and Engine DJ - Save to Spotify — one-click create a new private playlist in your Spotify account with every track from the planner (in section + sort order), plus a "Copy URL" button to paste into your DJ software
The Save-to-Spotify button only appears once at least one song is in the planner AND you've connected your Spotify account (see "Setup — DJ Spotify account" below).
One-click Spotify playlist export
Click Save to Spotify on the Music tab. RemixCRM:
- Creates a private playlist in your Spotify account named
[Client name] — [event date](e.g.Doe Wedding — 2026-08-15) - Bulk-adds every track from the planner, preserving section order and in-section sort order
- Returns a link to open the new playlist in Spotify
Tracks are added in batches of 100 (Spotify's per-request cap). For typical planners (50–200 tracks) the whole operation takes 1–3 seconds.
If the playlist already exists from a previous export, a new one is created each time — RemixCRM doesn't try to merge or update the existing playlist (the client's picks may have changed, simpler to create fresh). Delete or rename the old one in Spotify after if you want.
Using your planner with DJ software (Serato, rekordbox, etc.)
RemixCRM doesn't sync directly into your DJ software, but every modern DJ tool reads at least one of the formats RemixCRM exports. Pick whichever matches your rig.
Serato DJ Pro / Lite (with Spotify integration)
Serato added Spotify streaming integration in early 2026. To use a planner:
- On the event Music tab, click Save to Spotify
- When the success message appears, click 📋 Copy URL
- In Serato, go to the Spotify panel (left sidebar)
- Paste the URL into the search/playlist field — your playlist appears in the panel
- Drag tracks into your Library or create a crate
If you prefer a file-based flow:
- Click M3U8 on the Music tab — downloads a
.m3u8file - In Serato, drag the file onto a crate slot — Serato resolves the
spotify:track:<id>URIs to streaming tracks
rekordbox 7+
rekordbox added Spotify in late 2024. Same flow as Serato:
- Save to Spotify → Copy URL
- In rekordbox: Cloud Library → Spotify → paste the URL
- Drag the resolved playlist into a Collection or Playlist
M3U8 also works — drop the file into the All Tracks view.
Engine DJ / Denon Prime
Engine DJ supports Tidal natively but not Spotify (as of 2026). Your options:
- Use the CSV export — open in Excel/Numbers, manually search each track in your local library or Engine's Tidal integration
- Convert the Spotify playlist to Tidal using Soundiiz (free for ~200 tracks, $4/mo unlimited) or TuneMyMusic. They one-shot convert a Spotify playlist URL to a Tidal playlist URL — paste the result into Engine's Tidal panel.
VirtualDJ
VirtualDJ has had Spotify integration for years.
- Save to Spotify → Copy URL (or just open the playlist in Spotify desktop)
- In VirtualDJ: log in to Spotify under Settings → Online Music, then find your playlist in the file browser → Online → Spotify → Playlists
M3U8 also works the same way as in Serato.
Traktor Pro
Traktor doesn't have Spotify integration. Use the M3U8 + Soundiiz conversion path described under Engine DJ, but converting to Beatport LINK or SoundCloud Go+ instead (both supported by Traktor).
General tip — keep the planner as source of truth
The recommended workflow regardless of DJ software:
- Client uses the planner link to pick songs
- You review/add picks on the Music tab
- Right before the event: Save to Spotify → playlist appears in your account
- In your DJ software, find that playlist and create a crate from it
- Pre-analyze the crate so cue points and beat grids are ready
Don't edit the playlist directly in Spotify — make changes in RemixCRM and re-export. The planner is the audit trail (who added what, when, client notes vs DJ notes).
How it works for the client
The client opens the planner link. They see:
- Your custom message at the top (if set)
- Each section as a card, with sub-sections like "Must play" and "Do not play"
- Search box — type any song title or artist, see Spotify results with album art
- Add to section button next to each search result
- Connect Spotify button to import their existing playlists
They don't need a RemixCRM account. They don't need to log in. They just add songs and the page autosaves.
Optional password protection
If you want extra privacy on the planner link (e.g. the link gets shared in a planning thread you don't fully control), set a password under the Music tab → planner settings. Clients enter the password once per device.
Spotify account connection (optional for clients)
If the client connects their Spotify account, RemixCRM can:
- Read their private and collaborative playlists
- Show those playlists in the planner UI
- Let them bulk-import tracks from a playlist into a section
This uses Spotify's OAuth flow with read-only scopes (playlist-read-private,
playlist-read-collaborative). RemixCRM never creates, modifies, or
deletes anything in their Spotify account — only reads playlist contents.
Tokens are stored per-planner (not per-client-globally), so connecting to one event's planner doesn't link other events.
Setup — DJ Spotify account
To enable the Save to Spotify export, connect your Spotify account once per org:
- Go to Settings → Integrations
- Find the Spotify (Save planner to playlist) section
- Click Connect Spotify
- You'll be redirected to Spotify's OAuth page — log in, click "Agree"
- You'll be sent back to Settings → Integrations with a "Connected as [your Spotify display name]" badge
The scopes RemixCRM requests:
playlist-modify-public— create / modify public playlistsplaylist-modify-private— create / modify private playlistsplaylist-read-private— verify the created playlist after the API call
RemixCRM only writes new playlists — it doesn't modify or read your existing playlists, music library, listening history, or profile data.
Disconnecting
Same Settings page. Click Disconnect in the green "Connected as…" panel. RemixCRM wipes the access + refresh tokens immediately; subsequent Save-to-Spotify clicks will prompt you to reconnect.
You can also revoke from Spotify's side at any time: spotify.com/account/apps.
Token refresh
Spotify access tokens expire after 1 hour. RemixCRM stores a refresh token and auto-refreshes on demand — you don't have to reconnect every hour. If Spotify revokes the refresh token (e.g. you changed your password), RemixCRM clears the credentials and the next click on Save-to-Spotify will prompt for reconnection.
Setup (for the platform owner — usually nothing to do)
RemixCRM ships pre-configured to use Spotify's API. As an org admin, you don't need to do anything — search works out of the box for every org.
The integration uses application-level credentials (SPOTIFY_CLIENT_ID +
SPOTIFY_CLIENT_SECRET) set as environment variables on the RemixCRM
deploy. There's no per-org Spotify configuration.
Self-hosting? Create an app at developer.spotify.com/dashboard, add
https://app.yourdomain.com/api/spotify/callbackas a Redirect URI, and setSPOTIFY_CLIENT_ID+SPOTIFY_CLIENT_SECRETin your deploy environment.
What's stored
| Table | Purpose |
|---|---|
event_music_planners |
One row per event; holds the unique planner token, optional password, and (if connected) client's Spotify OAuth tokens |
music_planner_sections |
Sections like "Cocktail Hour", "First Dance" — many per planner |
music_planner_songs |
Individual song picks — Spotify track ID, name, artist, album, "must play" vs "do not play" flags |
The Spotify track ID is enough to look up the song later — track names and artists are denormalized into the row so they survive even if the song is removed from Spotify.
Spotify API rate limits
Spotify rate-limits the Web API at ~180 requests per minute per app. RemixCRM batches and caches, so a typical planning session uses 10-30 requests. You won't hit the limit unless dozens of clients are searching simultaneously.
If you do hit it, search returns "Try again in a moment" — auto-retries in a few seconds.
Privacy
- Clients don't need an account to use the planner
- If they connect Spotify, RemixCRM only reads their playlists — never writes, never accesses private profile data
- Their Spotify OAuth tokens are scoped to a single event's planner; not shared across orgs, not used for anything else
- Planner links are unguessable (~48 chars of entropy) but not authenticated — anyone with the link can edit. Add a password if you're concerned.
Limitations / roadmap
- No multiple-pinned-playlists — clients can import a playlist's contents but can't "pin" a playlist for live-updating
- No incremental playlist update — Save-to-Spotify creates a fresh playlist each time; doesn't update a previous one in place
- No DJ-side search history — you can't see "client searched 'Mr. Brightside' but didn't add it" (would help spot interest signals)
- Engine DJ / Traktor users need the Soundiiz conversion step described above (no native Spotify support in those tools yet)
If any of these are dealbreakers for your workflow, let us know.