Contacts in Trips

By System Generated · Updated Jun 10, 2026

Download PDF

A contact is a person your agency works with — a client, a spouse, a kid, a referral source. Contacts are the backbone of everything else in Trips: every trip has at least one traveler, every invoice is sent to someone, every portal account belongs to a contact. This article covers how they're structured, how to add them without creating duplicates, and what lives on each tab of the contact drawer.

Where contact data actually lives

Trips contacts are split across two systems, and knowing which is which makes everything else click into place.

Core owns identity

Your UrTravelPro account, sometimes called your Core account, is the platform-wide source of truth for who a person is. That includes first / middle / last name, suffix, email, phone, address, date of birth, and anniversary date.

Anyone in your agency working in Trips, Marketing, or Books sees the same person.

Trips owns travel data

Trips stores the rich CRM layer: travel preferences, passport details and scans, loyalty programs, emergency contact, dietary restrictions, trusted-traveler numbers, custom fields, notes, and which trips they're a traveler on.

None of that is shared with Marketing or Books — it's yours.

The contact drawer

There are no separate show / edit / create pages for contacts. Everything happens in a single right-side drawer that slides over the page you're on. Open it from:

The drawer has these tabs along the top:

Each tab has its own Save button. Saving on the Passport tab won't touch anything on Preferences. This keeps the form forgiving — you can fill in what you have and come back later.

Adding a contact (and the dedup check)

From /contacts click + New contact. The drawer opens in new-contact mode with an empty Contact info form. The minimum required is first name + last name; everything else is optional but helpful — especially email or date of birth, which is what makes the dedup check work.

When you click Save, Trips first asks Core: "Do you already know someone with this email, or this name + DOB combination, in this organization?" If Core says yes, Trips pops up a modal before creating a duplicate.

"You may already have this person"

Shown when at least one match is already a Trips contact in your org. Pick Open existing to jump to the existing row, or Create new anyway if it's genuinely a different person. Cancel closes the modal without saving anything.

"This person is on file in another app"

Shown when Core has a matching identity from Marketing or Books but no Trips contact yet. Pick Link to this to bind a fresh Trips row to that existing identity — your existing email history, Marketing audience membership, etc. stays attached to the same person.

How contacts attach to trips

A contact becomes a traveler the moment they're added to a trip. From the trip detail page, the Travelers strip near the top has a picker — start typing a name or email, pick from the dropdown, and they're on the trip. You can also click + Add new traveler to spawn the contact drawer in inline-add mode, fill in the form, and the freshly-created contact pops onto the traveler list without a page reload.

One traveler per trip is marked primary — that's the one most surfaces default to (the portal greeting, the invoice "Bill to" line, the messages thread). You can change which traveler is primary at any time from the trip's travelers strip.

Contacts and trips have a many-to-many relationship: one contact can be on many trips (Mrs. Smith's annual Cancún trip plus the family Disney trip), and one trip can have many travelers. The drawer's Trips tab shows every trip a given contact is on, newest first.

Archiving, restoring, and deleting

Contacts have three states:

The UUID bridge (and why you don't touch it)

Under the hood, every Trips contact carries a core_contact_uuid — Core's permanent ID for that person. You never see it in the UI, and that's deliberate. Trips refuses to accept a UUID from any direction except its own verified create / dedup flow.

Practical takeaway: the find-or-create dedup modal is the only "is this the same person?" decision you'll ever make. Everything downstream just works.


Troubleshooting

The dedup modal isn't firing when I know there's a duplicate.

Dedup runs on email or first name + last name + date of birth. If you're only typing a name with no email and no DOB, Core has no deterministic key to match on and will let the create through. Add either the email or the DOB before clicking Save and the modal will surface the match.

I edited the contact's email but Marketing still has the old one.

Identity (name, email, phone, address, DOB, anniversary) is owned by Core, and the change should propagate to every app that uses that identity. If Marketing hasn't caught up, give it a minute and refresh — and if it still hasn't, the contact in Marketing may have been imported separately before Trips linked them. Open a support ticket and we'll trace the link.

I can't delete a contact — it says "still linked to N trips."

Delete is blocked when the contact is referenced by trips, relationships, messages, or form submissions. The error message lists exactly what's holding them. Two choices: remove them from each trip / thread first, or just Archive instead — which is what we'd recommend for any contact with real history.

Where do I create custom fields like "T-shirt size" or "Frequent diet"?

At Settings → Custom contact fields. Definitions made there appear on every contact's Custom tab as inputs. The deep-dive on custom field types (text, date, choice, multi-choice) lives in its own help article.

Back to resources Published by UrTravelPro