Skip to main content

Magento AW Followupemail extension : Show multiple products in email template.

As I discussed in my previous post, due to well-written documentation it was very easy to integrate AW Followupemail extension. I implemented the basic functionality using newsletter templates and it is working very fine. But, there was a confusion in Product Review follow-up email, in case there will be having more than one products in cart. I mean to say I have to loop through the cart items. Let’s do it.

1) Go to Admin Section -> Newsletter->Newsletter Templates

2) Create a Newsletter template with name ‘AW Product Feedback’ and copy following code in Template Content section.

<h1>Dear {{var customer_name}}!</h1>

<p> You have bought these products on {{var order.updated_at|formatDateTime:F j, Y}}</p>

<p>The order contains the following items:</p>

<table border="1" cellspacing="1" cellpadding="5" width="100%">
            <th>No</th> <th>Product</th> <th>Image</th> <th>Leave a Review</th>
        {{foreach var="$order.getAllVisibleItems()" template="nsltr:AW Review Product Row"}}       

<p>Thanks !</p>
<p><a href="{{store url=""}}">{{store url=""}}</a></p>

3) Create another Newsletter template with name ‘AW Review Product Row’ and copy following code in Template Content section.

                 <td>{{var row_item_row_number}}</td>
                  <td><a href="{{store url="catalog/product/view" 
                  <td align="center"><img src="{{thumbnail size="75" 
                   <td align="center"><a href="{{store url="review/product/list" 
                  id="$"}}">Leave a Review</a></td>


That’s it and in follow-up email it will show all the products which were there in the ordered cart. While implementing this please keep in mind following points as well.

Important :
1) Newsletter Templates must be of ‘text’ type not ‘html’ type.

2) In first template we have mentioned following line : template="nsltr:AW Review Product Row"

nsltr : means template will be of newsletter type.
 AW Review Product Row : is name of the other template.

If you need any other help regarding this topic please feel free to comment.

Thanks!!!!!!!! Enjoy Programming :)


  1. This was a massive help to find how to alter email marketing for follow up emails. Thanks!


Post a comment

Thanks for your valuable comments.

Popular posts from this blog

Odoo: Qweb Templates Cache Issue

Hi Everyone, Today I was working on a hotel booking template in Odoo and changes made in the Qweb template(.xml) were not reflecting on updating module with odoo service restart. Tried few times without any success :(. Finally, I decided to delete the old template from Odoo backend and then update module again and it worked like a charm!! :) Steps to delete template from backend: Settings --> User Interface --> Views --> Search by template name Delete the used template. Although it's a small post, but I'm sure it will meet the purpose and help someone in the future. Thanks!!! Enjoy Programming!! :) Reference Links: ===================================

Odoo12/13: Add an extra action in the tree view action button

This post will help you to add an action window in Odoo. Odoo13: <act_window id="action_make_bank_payment"              name="Do Bank Payment"              res_model="account.ob.payment"              binding_model="account.move"              view_mode="form"              target="new"              binding_views="list,form"              domain="[('type','=', 'in_invoice')]"              groups="account.group_account_user" /> Odoo12: <act_window id="action_make_bank_payment"              name="Do Bank Payment"              res_model="account.ob.payment"             view_mode="tree,form"              domain="[('type','=', 'in_invoice')]"              groups="account.group_account_user" /> Thanks!!! Enjoy Programming!! :) Reference:

Odoo/OpenERP: one2one relational field example

one2one relational field is deprecated in OpenERP version>5 but you can achieve the same using many2one relational field. You can achieve it in following two ways : 1) using many2one field in both the objects ( ) 2)  using inheritance by deligation You can easily find the first solution with little search over internet so let's start with 2nd solution. Scenario :  I want to create a one2one relation between two objects of openerp hr.employee and hr.employee.medical.details What I should do  i. Add _inherits section in hr_employee class ii. Add field medical_detail_id in hr_employee class class hr_employee(osv.osv):     _name = 'hr.employee'     _inherits = {' hr.employee.medical.details ': "medical_detail_id"}     _inherit = 'hr.employee'         _columns = {              'emp_code':fields.char('Employee Code', si