All pages

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.

FieldWhat it holds
store
Your store's subdomain, such as yourstore.
signed_in
false on the sign-in screen, true once the customer is in.
customer
The signed-in customer: id (Diamra's id for them), email, phone, first_name and name. null on the sign-in screen.

Once after ready with the starting view, then each time the view changes, whether the customer moved or your page sent diamra:navigate.

FieldWhat it holds
path
The view now on screen, such as /salon/projects.

diamra:resize

Each time the studio's height changes. It fires often. The embed script already uses it to size the iframe.

FieldWhat it holds
height
The studio's height in pixels.

diamra:design.generated

A set of designs finishes generating.

FieldWhat it holds
design_id
Diamra's id for the set of designs.
image_count
How many designs came back, usually four.
image_urls
A link to each design in the set, in order.
customer
The signed-in customer: id (Diamra's id for them), email, phone, first_name and name.

diamra:project.started

Recipient: owner

The customer keeps a design, or takes the first action on one kept earlier, such as sending a message. A project opens on your bench.

FieldWhat it holds
project_id
Diamra's id for the project, not the id in its bench link. The estimate messages carry the same id.
design_id
The set the design came from, as in design.generated.
image_url
A link to the design. It matches that design's entry in image_urls.
customer
The signed-in customer: id (Diamra's id for them), email, phone, first_name and name.

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.

FieldWhat it holds
project_id
The project the price is for.
estimate_id
The quote on screen. A repeat with the same id is the same quote seen again.
price
The figure on screen with your markup, in your store currency, as a plain number such as 2450.
confidence
How sure the estimate is, as a whole number from 0 to 100. The lower it is, the more the price can still change. It is null when the price is final.
currency
The store currency's three-letter code, such as USD.
image_url
A link to the design being priced.
customer
The signed-in customer: id (Diamra's id for them), email, phone, first_name and name.
piece_type
What the piece is, such as ring, earrings or pendant.
style
Its style, such as halo_ring or stud_earrings.
setting
How the stones are set, such as prong or bezel. The center stone's setting when there is one.
metal
The metal the price is for, named as on the estimate, such as 14K Gold or Platinum.
metal_color
The gold's color, such as yellow, white or rose. null for other metals.
metal_options
The other metals listed under the price, each as { metal, price } in the same currency.
center_stone
The main stone, with type (such as diamond), shape, carat_weight for one stone, count (2 for a pair of studs) and origin. origin is lab_grown or natural, as priced. For a stone the customer brings, origin is lab_grown when the stone was described as lab-grown, and null otherwise. origin is also null for other gems, such as a sapphire. center_stone itself is null when there is no center stone.
total_carat_weight
The carats of every stone, added up.
ring_size
The US ring size, on rings only.
from
Where each detail above came from, one word per detail, under the same names. The words are listed after the messages, under "Where each detail came from".

diamra:estimate.accepted

Recipient: owner

The customer taps Continue on a price.

FieldWhat it holds
project_id
Diamra's id for the project. Keep it with the sale. It is not the id in bench_url, so open bench_url as sent.
estimate_id
The quote the customer accepted.
price
The amount the customer said yes to, with your markup, in your store currency, as a plain number.
currency
The store currency's three-letter code.
bench_url
Opens the project on your bench. It needs a bench sign-in.
image_url
A link to the accepted design.
customer
The signed-in customer: id (Diamra's id for them), email, phone, first_name and name.
piece_type
What the piece is, such as ring, earrings or pendant.
style
Its style, such as halo_ring or stud_earrings.
setting
How the stones are set, such as prong or bezel. The center stone's setting when there is one.
metal
The metal the customer said yes to, named as on the estimate.
metal_color
The gold's color, such as yellow, white or rose. null for other metals.
metal_options
The other metals listed under the price, each as { metal, price } in the same currency.
center_stone
The main stone, with type (such as diamond), shape, carat_weight for one stone, count (2 for a pair of studs) and origin. origin is lab_grown or natural, as priced. For a stone the customer brings, origin is lab_grown when the stone was described as lab-grown, and null otherwise. origin is also null for other gems, such as a sapphire. center_stone itself is null when there is no center stone.
total_carat_weight
The carats of every stone, added up.
ring_size
The US ring size, on rings only.
from
Where each detail above came from, one word per detail, under the same names. The words are listed after the messages, under "Where each detail came from".

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.

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.

FieldWhat it holds
subdomain
The store the studio moved to, such as yourstore--group, or null when it went back to the group's page.

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.

WordWhere the detail came from
customer_prompt
The customer's description of the design, or their answers to your design questions
ingredients
Design ingredients the customer picked
customer_answers
The customer's answer to an estimate question, or to one of your design questions
jeweler_answers
Your team's answer to an estimate question, on your bench
answers
An answer to one of your design questions or to an estimate question, when Diamra can't tell which or whose
measurements
The measurements or notes on the piece's measurement views
design_image
Read from the picture of the design
default
A standard value or a pricing rule, such as a 6.5 ring size or lab-grown diamonds by default
guessed
Diamra's best guess. Nothing it had settled the detail
customer_choice
A different metal the customer picked from the list when they tapped Continue. If they kept the design's own metal, the metal keeps its original word

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.

BeforeNow
diamra:generation_complete
diamra:design.generated
diamra:order_placed
diamra:project.started
diamra:estimate_shown
diamra:estimate.displayed
diamra:estimate.shown
diamra:estimate.displayed
diamra:estimate_accepted
diamra:estimate.accepted
diamra:signed_out
diamra:customer.signed_out

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.