Repository navigation
Conversation
A broadcast variation can now set sender_id to one of the marketing email integration's senders, and a transactional send can set email_options.sender_id. A sender that is not one of the integration's is refused with a 400 on save and send; a broadcast whose chosen sender has since left the integration cannot be scheduled or resumed, and pauses before its next batch if already sending. The console offers a sender under each template of the broadcast drawer and shows it on the broadcast's details.
- The pause reason names the variation and the sender, instead of quoting the data feed pause sentinel. - A broadcast waiting for its A/B winner, or already paused, is not paused again for a variation's sender. - A paused broadcast whose chosen sender left the integration offers a "Change sender" dialog next to Resume; a failed resume shows the server's message. - The sender field can be cleared once the integration has no sender left, and names no template's sender before a template is chosen. - An integration without any sender is no longer reported as a missing chosen sender. - CHANGELOG, OpenAPI and plan say the broadcast pauses at its next sending round, not before its next batch.
…cast - The pause reason and the change-sender dialog number a variation that has no name, as the console saves them. - The dialog is offered only when a variation still to send lost its sender, asks once per template, and a failed resume shows the server's message alone. - A run on a paused broadcast is no longer announced as sending started. - CHANGELOG, OpenAPI and plan state that only a variation still to send is stopped, and when it pauses.
- CHANGELOG and OpenAPI: a variation whose sender was removed is queued for no further recipient; emails already queued keep their sender, and saving test_settings checks every variation, a losing one's included. - The change-sender dialog is not offered once every recipient is queued, since the queued emails keep the sender they were queued with.
# Conflicts: # CHANGELOG.md # config/config.go # console/src/i18n/locales/ca.po # console/src/i18n/locales/de.po # console/src/i18n/locales/en.po # console/src/i18n/locales/es.po # console/src/i18n/locales/fr.po # console/src/i18n/locales/it.po # console/src/i18n/locales/ja.po # console/src/i18n/locales/pt-BR.po # web_analytics_sdk/dist/notifuse-analytics.cjs.js # web_analytics_sdk/dist/notifuse-analytics.esm.js # web_analytics_sdk/dist/notifuse-analytics.min.js # web_analytics_sdk/package.json
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## dev #509 +/- ##
==========================================
+ Coverage 88.82% 88.84% +0.01%
==========================================
Files 368 368
Lines 71860 72012 +152
==========================================
+ Hits 63832 63979 +147
- Misses 5390 5391 +1
- Partials 2638 2642 +4
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #418.
Problem
A broadcast or a transactional email always left from its template's sender. Sending a campaign from another address meant editing or duplicating the template.
Change
test_settings.variations[].sender_id), in an A/B test too, can choose one of the marketing email integration's senders, or keep its template's. The value is stored in the existingtest_settingsJSONB, so there is no migration.email_options.sender_idpicks one of the transactional integration's senders. It is checked before the contact is created or updated.from_namestill applies on top of it. The SMTP bridge accepts it in a relayed JSON body.EmailProvider.ResolveSender(chosenID, templateSenderID). A chosen sender that is not one of the integration's is an error and never falls back to another address. Without a chosen sender, the template's sender applies, then the integration's default, as before.BroadcastVariation.sender_idandemail_options.sender_idin the schemas, withopenapi.jsonre-bundled. CHANGELOGFeaturebullet under## [43.2] - WIP.Plan:
plans/feat-send-time-sender-plan.md.Tests
ResolveSender,VariationSenderID, the same template twice with different senders,TestSettingsProvided, JSON round-trip.sender_id, refused before the contact upsert;test_completedandpausedbroadcasts are not paused again, and a paused run is not announced as sending started.TestSendTimeSendercovers a single broadcast, an A/B test with one sender per variation, a transactionalsender_id, an unknown sender refused on create and on send, and a removed sender refusing schedule.make test-unit,INTEGRATION_TESTS=true go test -race -tags integration,licdev ./tests/integration/ -run TestSendTimeSenderandcd console && npx vitest run(2,173 tests) pass locally after mergingdev.Docs
Notifuse/docs#30 (broadcast campaigns and transactional API pages, docs
openapi.json).Known, not addressed
completed_atempty, so resuming still asks for a sender although every email is queued. This errs on the safe side.testingand scheduled broadcasts, the dialog's dedupe and query invalidation, and the page's resume toast.checkVariationSenders(domain, service, orchestrator), and the in-app API examples do not showsender_id.