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.0or later. - PHP
8.3or later. - A dedicated follow-up detail layout for every shared entity type.
- A relationship to the recipient entity when sending to related parties.
- An
emailAddressfield 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¶
- Open Administration -> Layout Manager.
- Select the entity type.
- Open the registered follow-up layout.
- Add only fields that external recipients may view.
- 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¶
Create a link¶
$uuid = eblaFollowUp\createLink('contacts', '+7 days');
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 a link¶
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();
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');
The modifier is calculated from the time the formula runs.
Revoke a link¶
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
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.
Link Lifecycle¶
| 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
eblaFollowUpDefaultLayoutNamematches 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
detailordetailSmall; 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.
Related recipients do not receive email¶
- Confirm the relationship contained records when
createLinkran. - 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.



