Skip to content

Ebla Follow Up

Overview

Ebla Follow Up creates expiring public links for EspoCRM records. A recipient can open the link without signing in and view only the fields included in the record's dedicated follow-up layout.

Use the extension for application tracking, order updates, document review, service-request status, and similar cases where an external person needs limited, read-only access.

Warning

A follow-up URL is a bearer link. Anyone who receives it can open the public view until the link expires or is revoked.

Requirements

  • EspoCRM 10.0 or later.
  • PHP 8.3 or later.
  • A dedicated follow-up detail layout for every shared entity type.
  • A relationship to the recipient entity when sending to related parties.
  • An emailAddress field on recipient entities used by automatic distribution.

Key Features

  • Expiring public links: Generate one reusable follow-up link for a record.
  • Layout-controlled disclosure: Return only fields included in the configured public layout.
  • Protected files: Allow files and images only when their fields appear in that layout.
  • Email delivery: Send with the built-in message or an EspoCRM email template.
  • Related-party delivery: Send to the relationship members captured during link creation.
  • Formula integration: Create, send, extend, and revoke links from formulas or workflows.

Configuration

1. Register the public layout

Add an additional detail layout to the entity's clientDefs metadata. The default layout name is detailFollowUp.

{
    "additionalLayouts": {
        "detailFollowUp": {
            "type": "detail"
        }
    },
    "eblaFollowUpDefaultLayoutName": "detailFollowUp"
}

The custom eblaFollowUpDefaultLayoutName value is optional when you use detailFollowUp. Set it when the public layout has another name.

Rebuild EspoCRM after changing metadata:

php rebuild.php

2. Configure the public fields

  1. Open Administration -> Layout Manager.
  2. Select the entity type.
  3. Open the registered follow-up layout.
  4. Add only fields that external recipients may view.
  5. Save the layout.

Warning

The public page does not fall back to detailSmall. A missing follow-up layout causes the link to be rejected.

File, image, and attachment-multiple fields are supported. Their public download URLs work only when the field is present in the follow-up layout and the requested attachment belongs to that field.

3. Prepare the recipient relationship

Create or select a relationship field whose related entity contains an emailAddress field. Pass that relationship field name to eblaFollowUp\createLink.

The extension stores the related record IDs when the link is created. Later relationship changes do not alter that recipient snapshot.

Usage

$uuid = eblaFollowUp\createLink('contacts', '+7 days');

Create a follow-up link in a formula

The first argument is the relationship field name. The optional second argument is a PHP-compatible date-time modifier or absolute date-time. It defaults to +1 day.

Examples:

eblaFollowUp\createLink('applicant', '+14 days');
eblaFollowUp\createLink('contacts', '2026-08-31 18:00:00');

If the record already has a follow-up link, the function returns its existing token. It does not replace its expiration or recipient snapshot.

Send to one address with the built-in message:

eblaFollowUp\send('john@example.com');

Send to one address with an EspoCRM email template:

eblaFollowUp\send('john@example.com', 'email-template-id');

Send to every related party captured during link creation:

eblaFollowUp\send();

Distribute a follow-up link

The function rejects invalid email addresses, unknown template IDs, missing links, and expired links.

Extend or replace the expiration

eblaFollowUp\setTerminateAt('+3 days');
eblaFollowUp\setTerminateAt('2026-12-31 23:59:59');

Change the follow-up expiration

The modifier is calculated from the time the formula runs.

Call the function without an argument to delete the current record's follow-up token:

eblaFollowUp\setTerminateAt();

Previously sent URLs stop working immediately. Create a new link afterward if you need a new recipient snapshot.

Open the public view

Recipients receive a URL in this format:

https://your-crm.example/?entryPoint=FollowUp&uuid=unique-token

Follow-up link in an email

The server verifies that the token belongs to Ebla Follow Up, has not expired, and still points to an existing record.

Email Templates

Built-in template

The built-in HTML message uses:

  • {{siteUrl}}: Complete follow-up URL.
  • {{applicationName}}: EspoCRM application name.
  • Standard entity values such as {{name}}.

EspoCRM email template

Create a template under Emails -> Email Templates, then pass its record ID to eblaFollowUp\send.

Custom templates may use {siteUrl} or {{siteUrl}}, and {applicationName} or {{applicationName}}. If the body contains neither URL form, the extension appends the public URL. Standard EspoCRM email-template placeholders remain available.

Template attachments are copied to the outgoing email.

Action Result
createLink(linkName, expiration) Creates one link or returns the record's existing link.
send(email, templateId) Sends a valid, unexpired link.
setTerminateAt(expiration) Replaces the current expiration time.
setTerminateAt() Revokes the link by deleting its token.

Troubleshooting

The public page reports an invalid request

  • Confirm the URL was copied completely.
  • Confirm the token belongs to Ebla Follow Up.
  • Confirm the target record still exists.
  • Confirm the link has not been revoked.

The follow-up layout is not configured

  • Register the additional detail layout in clientDefs.
  • Confirm eblaFollowUpDefaultLayoutName matches the layout name.
  • Run php rebuild.php.
  • Configure the layout under Administration -> Layout Manager.

A field does not appear

  • Add the field to the follow-up layout.
  • Save the layout and refresh the public page.
  • Do not rely on detail or detailSmall; they are not public fallbacks.

A file cannot be opened

  • Confirm its file, image, or attachment-multiple field is in the follow-up layout.
  • Confirm the attachment is still linked through that field.
  • Confirm the follow-up link is still valid.
  • Confirm the relationship contained records when createLink ran.
  • Confirm those records have an emailAddress.
  • Revoke and recreate the link after changing the relationship.
  • Check the EspoCRM outbound email configuration and logs.

Extension Video

Support and Feedback

For support, open a ticket through the Eblasoft customer portal.

Changelog