Square Customer Data and Receipt Roller Customer Data Mapping
Customers registered in Square Customer Directory are automatically converted into Receipt Roller's customer data (CrmCustomerDto) after connecting Square to Receipt Roller. This article summarizes the field-by-field correspondence and the quirks specific to Square.
For the two-way sync mechanism for membership data itself (timing, priority in case of conflicts, troubleshooting), see Two-way membership data sync with Smaregi / Square. This article is strictly a technical document focused on "which field maps to what."
Field mapping table
| Square Customer Directory | Receipt Roller (CrmCustomerDto) |
Notes |
|---|---|---|
id | — (held in PosCustomerLink) | Square's internal ID. On the Receipt Roller side this is not stored on Customer itself, but saved in vendorIdentifier of the link table PosCustomerLinkEntity. |
reference_id | MembershipCode | An ID store operators can use freely. Adopted directly as Receipt Roller's membership number. If unset, Receipt Roller auto-issues one. |
family_name | LastName | Carried over as-is. |
given_name | FirstName | Carried over as-is. |
email_address | Email | Normalized by lowercasing and trimming leading/trailing whitespace. |
phone_number | Phone | Normalized to E.164 format (Square already stores numbers in E.164, so conversion is unnecessary in most cases). |
birthday | DateOfBirth | Square uses YYYY-MM-DD format. Stored on the Receipt Roller side as a UTC date-time. |
address.postal_code | PostalCode | Hyphens are preserved as-is. |
address.administrative_district_level_1 | Prefecture | Prefecture. |
address.locality | City | City/ward/town/village. |
address.address_line_1 | Address1 | Neighborhood and house number. |
address.address_line_2 | Address2 | Building name and room number. |
note | Notes | Free-text memo for store staff. |
Fields that are not imported
- Name reading / kana (
LastNameKana/FirstNameKana) — blank because Square has no kana field. - Gender (
Gender) — not a standard field in Square Customer Directory. - Square-side groups (
group_ids) — Square's group feature operates at a different granularity than Receipt Roller'sMembershipLevelorTags, so it is not imported in the current version. - Square-side segments (
segment_ids) — these are dynamically computed segments, so carrying them over to the Receipt Roller side has little meaning and is not supported.
Matching and new registrations
When new customer information arrives from Square, Receipt Roller performs duplicate-person matching against existing customers in the following order.
MembershipCode(exact match with Square'sreference_id)Email(exact match after lowercasing and trimming leading/trailing whitespace)Phone(exact match after E.164 normalization)
If none of these match, the customer is added to the CRM as new. If a match is found, the existing customer's information is updated (field-level last-write-wins).
Sync timing
- Registering/updating members (Square → Receipt Roller): Reflected in the CRM within seconds via Square Webhooks (
customer.created/customer.updated). - Periodic backup: As a fallback in case the webhook doesn't arrive, differences are fetched via the
SearchCustomersAPI every hour. - Receipt Roller → Square: The moment a customer registers as a member or updates their information in the app, a call to Square's
CreateCustomer/UpdateCustomeris added to the queue. Usually reflected within seconds to a few minutes.
Points to note
- If a customer is physically deleted on the Square side, matching on the Receipt Roller side stops working. Please be careful when deleting from the Square dashboard.
- If staff manually rewrite Square's
reference_id, theMembershipCodematch on the Receipt Roller side breaks. We recommend not changing this field once it is treated as a membership number. - Square's
addressis a structured field, but in many cases store staff enter everything intoaddress_line_1without distinguishing "house number" from "building name" in the UI. In that case,Address2will be blank. - Contact the development team if you'd like to make use of Square's groups or segments as Receipt Roller tags.
Related guides
- CrmCustomerDto reference (for developers) — full field specification of the canonical model
- Two-way membership data sync with Smaregi / Square
- Square transaction data and Receipt Roller transaction data mapping
- Square POS integration setup
-
Staff Sync via Square IntegrationExplains how stores connected to Square POS can sync Team Member information bidirectionally with ReceiptRoller — job assignments, pay rates, assigned stores, owner permissions, and more, kept aligned with Square.
-
Two-Way Member Information Sync with Smaregi/SquareLearn how ReceiptRoller's member information syncs bidirectionally with connected POS systems like Smaregi and Square. Covers which fields sync, sync timing, conflict priority rules, new customer matching, supported POS systems, and troubleshooting.
-
Connecting with POSAn overview of the POS systems that can connect with ReceiptRoller and how to connect them. Supports Square and Smaregi.
-
Square Staff Data and Receipt Roller Staff Data MappingExplains how Square Team Members are linked to Receipt Roller's staff data (StaffDto). Covers how to use manual linking, the logic for resolving who is attributed to a transaction, and the key fields in the Team Member API.
-
How Digital Receipts WorkAn explanation of how ReceiptRoller's digital receipts work, and how to set up POS integration with Square and Smaregi.