[{"data":1,"prerenderedAt":76},["ShallowReactive",2],{"pattern-eventbridge-scheduler-ses-abandoned-cart-notification":3},{"id":4,"title":5,"architectureURL":6,"cleanup":7,"contributors":11,"deploy":13,"description":17,"extension":18,"framework":19,"gitHub":20,"highlight":6,"introBox":26,"language":30,"level":31,"meta":32,"patternArch":33,"resources":63,"s3URL":6,"services":6,"stem":71,"testing":72,"videoId":6,"__hash__":75},"patterns\u002Fpatterns\u002Feventbridge-scheduler-ses-abandoned-cart-notification.json","Amazon EventBridge Scheduler to Amazon SES - Per-customer notification scheduling",null,{"text":8},[9,10],"terraform destroy","terraform show",[12],"content\u002Fcontributors\u002Frajil-paloth.json",{"text":14},[15,16],"terraform init","terraform apply","Create an Amazon EventBridge Scheduler schedule that sends per-customer notifications for abandoned carts using Amazon SES.","json","Terraform",{"template":21},{"repoURL":22,"templateURL":23,"projectFolder":24,"templateFile":25},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Feventbridge-scheduler-ses-abandoned-cart-notification","serverless-patterns\u002Feventbridge-scheduler-ses-abandoned-cart-notification","eventbridge-scheduler-ses-abandoned-cart-notification","main.tf",{"headline":27,"text":28},"How it works",[29],"This pattern demonstrates how to use Amazon EventBridge Scheduler to drive per-customer abandoned cart email notifications on an hourly cadence. A Lambda function, invoked by the scheduler, queries a DynamoDB GSI for customers with abandoned carts that have not yet been notified, sends each a personalised HTML email via Amazon SES, and marks the record as notified to prevent duplicate emails. The pattern includes idempotent notification logic, seed test data, a dead-letter queue for failed scheduler invocations, and least-privilege IAM policies scoped to the specific SES identity and DynamoDB table.","Python","300",{},{"icon1":34,"icon2":39,"icon3":43,"icon4":47,"icon5":51,"line1":54,"line2":57,"line4":59,"line6":61},{"x":35,"y":36,"service":37,"label":38},20,50,"eventbridge-scheduler","EventBridge Scheduler",{"x":36,"y":40,"service":41,"label":42},15,"sqs","Amazon SQS DLQ",{"x":36,"y":44,"service":45,"label":46},75,"lambda","AWS Lambda (Notification)",{"x":48,"y":40,"service":49,"label":50},80,"dynamodb","Amazon DynamoDB",{"x":48,"y":44,"service":52,"label":53},"ses","Simple Email Service",{"from":55,"to":56},"icon1","icon2",{"from":55,"to":58},"icon3",{"from":58,"to":60},"icon4",{"from":58,"to":62},"icon5",{"bullets":64},[65,68],{"text":66,"link":67},"Verify Sender Email Address","https:\u002F\u002Fconsole.aws.amazon.com\u002Fses\u002Fhome#\u002Fverified-identities",{"text":69,"link":70},"Request production access (Moving out of the Amazon SES sandbox)","https:\u002F\u002Fdocs.aws.amazon.com\u002Fses\u002Flatest\u002Fdg\u002Frequest-production-access.html","patterns\u002Feventbridge-scheduler-ses-abandoned-cart-notification",{"text":73},[74],"See the GitHub repo for detailed testing instructions.","E6xY4aJzfPGxpeXcD1mKGoPF8V5uoq2OY0u8ir8o_1Q",1782210916820]