Messages from the studio
Five messages carry a customer field with the signed-in customer's id, email, phone, first_name and name. idis Diamra's id for the customer, the same on every device where they sign in with their phone or email. Anything Diamra doesn't know arrives as null; a guest has no email. phone is in international format, such as +15551234567. Picture links are public WebP images, 1024 pixels square, and need no sign-in, so they work in an email. Words such as halo_ring come in lowercase, joined by underscores, so swap the underscores for spaces to print them.
Diamra may add messages, and fields to a message, so ignore any you don't recognize. The names and fields on this page will stay as they are. Before November 1, 2026, five messages had other names: see Renamed messages.
A tag beside a message's name is its intended recipient: the person Diamra notifies about it, the owner or the customer. Your page receives every message; the recipient says who the news is for, so a page that sends its own notifications knows whom to tell. It is not a field of the message. A message with no tag notifies nobody.
diamra:ready
When the sign-in screen opens, and again once the customer is signed in. A customer who is already signed in only gets the second.
diamra:navigate
Once after ready with the starting view, then each time the view changes, whether the customer moved or your page sent diamra:navigate.
diamra:resize
Each time the studio's height changes. It fires often. The embed script already uses it to size the iframe.
diamra:design.generated
A set of designs finishes generating.
diamra:project.started
Recipient: ownerThe customer keeps a design, or takes the first action on one kept earlier, such as sending a message. A project opens on your bench.
diamra:estimate.displayed
A price has been on the estimate screen for a moment and the customer has not tapped Continue on it yet. It comes again when the price changes and each time the customer reopens the estimate.
diamra:estimate.accepted
Recipient: ownerThe customer taps Continue on a price.
diamra:customer.signed_out
Your page sent diamra:sign_out and the studio has finished signing the customer out. A sign-out from the studio's own menu does not send it. It has no fields beyond type.
diamra:navigated
Stores in a group only. The studio moved itself: from the group's sign-in page to the customer's store, or from a store's sign-in screen back to the group's page. It comes from the address the studio is leaving, so a listener that checks one store's address misses the move from the group's page. On a group embed the embed script follows it, and every later message comes from the new address: the store's, or https://diamra.com after a move back. Not the same as diamra:navigate, which reports a new view inside the studio.
Where each detail came from
Diamra works out the piece from what it has: the customer's words and answers, your team's answers, measurements and the picture. When nothing settles a detail, it guesses. The from field on both estimate messages tells you which, one word per detail, under the same names as the details. If the customer gave the ring size in answer to an estimate question, its word is customer_answers. If nobody gave it, the word is default or guessed, and the size is worth confirming with the customer before the piece is made. For a detail built from several parts, such as the metal's name or the total carat weight, from names the least certain part. When a detail is null, its word is nulltoo. New words may be added later, so treat one you don't recognize like guessed.
Renamed messages
On November 1, 2026, five messages were renamed to follow the way Diamra names its webhook events, such as project.started, and every field moved to snake_case. The old names are no longer sent, so a page that listens for one needs the new name and the new field names.
Two fields have new names: orderId is now project_id, and customer.diamraUserId is now customer.id. The rest are their old names in snake_case: benchUrl is now bench_url, customer.firstName is now customer.first_name, and so on. diamra:open_storeis no longer sent either: a group's page gets diamra:navigated instead, and the embed script handles it. For part of November 1, diamra:estimate.displayed was called diamra:estimate.shown.