> ## Documentation Index
> Fetch the complete documentation index at: https://getfaceage.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Analytics events

> Every analytics event Face Age sends during a scan, when it fires, and how to use it in Google Tag Manager and GA4.

Face Age sends an event to your analytics at each step of the scan — from opening the modal to adding products to the cart. Marketers can use them to build funnels and measure conversion; developers can use them to trigger their own tags.

> [card] [On Shopify](https://getfaceage.com/docs/help-center/integrations.md#google-analytics)
>
> Connect Google Analytics in the Face Age app.

> [card] [With the SDK](https://getfaceage.com/docs/developer-guides/integrations/analytics.md)
>
> Set the `gtag` option.

## Modal

| `action` | `event` | `category` / `label` | Fires when |
| - | - | - | - |
| `openModal` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper clicks the floating button ([modal mode](https://getfaceage.com/docs/developer-guides/display-modes/modal.md)) |
| `closeModal` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper closes the modal |

## Quiz

| `action` | `event` | `category` / `label` | Fires when |
| - | - | - | - |
| `start` | `view` | `quiz_name` / `Face Age Quiz` | The first quiz question is shown |
| `question` | `view` | `question_title` / the question title (or `Quiz <n>`) | Each quiz question is shown |
| `choice` | `click` | `choice_text` / `<field name>: <answer>` | The shopper submits a question answered with a select, radio or checkbox field |
| `email`, `clientEmail`, `phone` | `submit` | `quiz_name` / `Face Age Quiz` | The shopper submits an email or phone field |

> [!NOTE]
>
> The `email`, `clientEmail` and `phone` events only say that the field was submitted — the address or number itself is never sent. `choice` events do include the selected answer.

## Skin analysis

| `action` | `event` | `category` / `label` | Fires when |
| - | - | - | - |
| `instructions` | `submit` | `skin_analysis` / `Face Age Skin Analysis` | The shopper continues past the instructions screen |
| `start` | `view` | `skin_analysis` / `Face Age Skin Analysis` | The camera / upload screen is shown |
| `selectPhoto` | `click` | `skin_analysis` / `Face Age Skin Analysis` | A photo is taken or uploaded |
| `restartPhoto` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper starts the photo step again |
| `backToPhoto` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper goes back to the photo step |
| `startSkinAnalyze` | `submit` | `skin_analysis` / `Face Age Skin Analysis` | The photo is sent for analysis |
| `tips` | `view` | `skin_analysis` / `Face Age Skin Analysis` | The image-quality tips are shown (see `disableImageAlert`) |
| `results` | `view` | `skin_analysis` / `Face Age Skin Analysis` | The analysis results are shown |

## Results and report

| `action` | `event` | `category` / `label` | Fires when |
| - | - | - | - |
| `problem` | `click` | `problem_name` / the concern key, for example `acne` | The shopper taps a skin concern in the results or the compare view |
| `openSkinInfo` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper opens the [skin report](https://getfaceage.com/docs/developer-guides/analysis/skin-report.md) |
| `closeSkinInfo` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper closes the skin report |
| `downloadReport` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper downloads the PDF report |
| `retakeAnalysis` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper starts a new analysis |
| `backResults` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper goes back to the results |

## Products

| `action` | `event` | `category` / `label` | Fires when |
| - | - | - | - |
| `displayProducts` | `view` | `skin_analysis` / `Face Age Skin Analysis` | The [product recommendations](https://getfaceage.com/docs/developer-guides/personalization/product-recommendations.md) are shown |
| `product` | `view` | `product_name` / the product title | The shopper clicks a product |
| `addCart` | `click` | `product_name` / the product title | The shopper adds one product to the cart |
| `addCart` | `click` | `product_name` / `all recommendation products` | The shopper adds all recommended products (`showAddToCardAll`) |
| `checkoutButton` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper clicks checkout |

## Routines

| `action` | `event` | `category` / `label` | Fires when |
| - | - | - | - |
| `displayRoutines` | `view` | `skin_analysis` / `Face Age Skin Analysis` | The [routine](https://getfaceage.com/docs/developer-guides/personalization/routines.md) is shown |
| `routineMorning` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper switches to the morning routine |
| `routineNight` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper switches to the night routine |
| `backRecommendation` | `click` | `skin_analysis` / `Face Age Skin Analysis` | The shopper goes back from the routine to the recommendations |

## Send them to GA4 with Google Tag Manager

**1. Create Data Layer Variables**

In GTM, go to **Variables → New → Data Layer Variable** and create three variables: `action`, `category` and `label`.

**2. Create a trigger**

Go to **Triggers → New → Custom Event**. Set the event name to `^(view|click|submit)$`, check **Use regex matching**, and add the condition **category** matches RegEx `^(skin_analysis|quiz_name|question_title|choice_text|problem_name|product_name)$` so other `click` events on your site don't fire it.

**3. Create a GA4 event tag**

Go to **Tags → New → Google Analytics: GA4 Event**. Use your measurement ID, set the event name to `faceage_{{action}}`, and add `category` and `label` as event parameters. Attach the trigger from step 2.

**4. Publish and test**

Open **Preview**, run a scan on your site, and check that each step shows up in GTM and in GA4 **DebugView**.

## Build a funnel

These events map to a typical scan-to-cart funnel:

| Step | Event |
| - | - |
| 1. Opened | `openModal` (modal) or `start` (skin\_analysis) |
| 2. Quiz started | `start` (quiz\_name) |
| 3. Photo sent | `startSkinAnalyze` |
| 4. Results seen | `results` |
| 5. Products seen | `displayProducts` |
| 6. Added to cart | `addCart` |
| 7. Checkout | `checkoutButton` |

> [!TIP]
>
> To react to these steps in your own code instead of a tag manager, use the SDK's [events](https://getfaceage.com/docs/developer-guides/integrations/events.md) such as `onAddToCart` and `onCheckout`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.