From 00b2aa991f4eacd81ac68015e67e386928d60a8c Mon Sep 17 00:00:00 2001 From: "devin-ai-integration[bot]" <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:55:35 -0400 Subject: [PATCH] feat: add attribution footer when UI is personalized (v1.3.0) (#12) - Add Docuseal.personalized?(account) helper that returns true when a custom logo is attached OR a brand name is configured - Show 'Powered by DocuSeal' footer in the app layout when personalized - Show 'Powered by DocuSeal' line in email attribution when personalized - No footer shown in default (non-personalized) state Co-authored-by: Bob Develop --- app/views/layouts/application.html.erb | 5 +++++ app/views/shared/_email_attribution.html.erb | 6 ++++++ lib/docuseal.rb | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 5558e869..946e461b 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -32,6 +32,11 @@
<%= yield %>
+ <% if defined?(current_account) && Docuseal.personalized?(current_account) %> + + <% end %> <%= render 'shared/body_scripts' %> diff --git a/app/views/shared/_email_attribution.html.erb b/app/views/shared/_email_attribution.html.erb index 8cfd4988..160730ac 100644 --- a/app/views/shared/_email_attribution.html.erb +++ b/app/views/shared/_email_attribution.html.erb @@ -1,3 +1,4 @@ +<% email_attr_account = @current_account || @submitter&.account || @submission&.account %>

---

@@ -8,3 +9,8 @@ <%= t('sent_using_product_name_free_document_signing_html', product_url: "#{Docuseal::PRODUCT_EMAIL_URL}/start", product_name: Docuseal.product_name) %> <% end %>

+<% if Docuseal.personalized?(email_attr_account) %> +

+ <%= t('powered_by') %> <%= Docuseal.product_name %> +

+<% end %> diff --git a/lib/docuseal.rb b/lib/docuseal.rb index 68020e29..a446fd39 100644 --- a/lib/docuseal.rb +++ b/lib/docuseal.rb @@ -120,6 +120,14 @@ module Docuseal ENV.fetch('CUSTOM_LOGO_URL', nil) end + def personalized?(account) + return false unless account + + account.logo.attached? || + custom_logo_url.present? || + account.config_value(AccountConfig::BRAND_NAME_KEY).first.present? + end + def product_name PRODUCT_NAME end