# What is the preview mail action pipeline?

The Preview Mail Action Pipeline is used to build a temporary `\Aero\Events\Models\MailAction` instance from request data to be previewed.

For example, you can add custom fields to the `\Aero\Events\Models\MailAction` instance:

```php
\Aero\Admin\Pipelines\PreviewMailAction::extend(function (\Aero\Admin\Pipelines\PreviewMailAction $pipeline, \Closure $next) {
    \Aero\EmailBuilder\Facades\EmailBuilder::boot();

    $data = $pipeline->request()->validated();

    $version = \Aero\EmailBuilder\Helpers\PreviewVersion::get($data);

    $template = \Aero\EmailBuilder\Facades\EmailBuilder::getTemplate($data['id'], $version)->toArray();

    $pipeline->mailAction()->fill([
        'template_header' => $template['header'] ?? null,
        'template_body' => $template['body'] ?? null,
        'template_footer' => $template['footer'] ?? null,
        'template_settings' => $template['settings'] ?? null,
    ]);

    return $next($pipeline);
});
```

<p class="callout info">This example is taken from the [`aerocommerce/email-builder`](https://agora.aerocommerce.com/packages/aerocommerce/email-builder) module</p>

---

### Parameters

<table border="1" id="bkmrk-parameter-type-descr" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3731%;"></col><col style="width: 33.3731%;"></col><col style="width: 33.3731%;"></col></colgroup><tbody><tr><td>**Parameter**</td><td>**Type**</td><td>**Description**</td></tr><tr><td>`$pipeline`</td><td>`\Aero\Admin\Pipelines\PreviewMailAction`</td><td>The preview mail action pipeline.</td></tr><tr><td>`$next`</td><td>`\Closure`</td><td>The next step in the pipeline.</td></tr></tbody></table>

### Methods

<table border="1" id="bkmrk-method-description-i" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50.0596%;"></col><col style="width: 50.0596%;"></col></colgroup><tbody><tr><td>**Method**</td><td>**Description**</td></tr><tr><td>`mailAction()`</td><td>Returns the temporary mail action instance being built.</td></tr><tr><td>`request()`</td><td>Returns the request.</td></tr></tbody></table>