One of the business scenarios I have, is to allow members to process an order without paying in advance, as in some cases there will be validation prior to shipping products. Once placing web order, purchase metric is fired with (as an example) one order, 5 units (products) and zero revenue
Once validation is completed, we send an email to pay the invoice balance for shipped products. We have a functionality that allows members simply to enter the invoice#, view their balance and pay the balance in full or a partially.
The Question, if I pass purchase metric when processing the invoice payment, that would capture the revenue, but it will also add to the overall orders count, which was already captured previously. Do we have any work around this to report $ value to revenue metric without increasing the order count?
Yes, you can pass specific values into events, however they must be whole numbers. If you don't need to worry about currency conversion, you can use non-currency events and factor in the decimal place in the calculated metric.
This would increment event1 by 500. then you could create a calculate metric:
[Revenue] + ([event1] / 100)
You would pass the number of cents into the event, then the calculated metric would sum revenue and your custom event (divided by 100).
Correct, the calculated metric would be your summed source of truth.
event1 would be the amount you would like to add to revenue, in cents. I include the division by 100 because events can only have whole numbers without a more complicated implementation.
So if you wanted to add $3.99 to revenue for something, you would:
Then you would use the above calculated metric so it becomes $3.99.
Order is automatically imcremented when you send event purchase.
If you do not want to increase order then do not send event purchase.
I would suggest you to use several custom events:
So it would look like this:
//place order or 5 units
//Beware of ; placeholders for omitted values
and once they purchase then you can send
//100 for each unit
Then you will have a report
Products Placed orders Placed units Placed revenue Orders Units Revenue
product1 1 5 500 1 5 500
So you could create segments on products that have places orders but no orders so far.
You can also create calculated metrics to do difference between placed metrics and actual metrics.
There are other options like:
Numeric 2 classificattion which allows you to create metrics classification based on dates etc... bit overkill for your use case I think
Same bit overkill and will require to upload data sources in 90 days that follow. Data sources takes time to process as well.
So I tried to populate specific values to see what actually gets reported in the custom revenue metric. And it looks like it got it right!
In the example below, you have the actual paid amount in the left which sums up to $5, and the reported values in the custom event, which if you sum them up, they should be $4. However, the metric actually reported the correct $5 amount
So I don't see a need to multiply values with 100 unless I want to see values in cents
Appreciated again Gigazelle
Short answer is processing architecture.
If you would like to look further into currency events, you can pass decimal places into them. In addition, they automatically convert different currencies similar to how revenue operates: https://marketing.adobe.com/resources/help/en_US/sc/implement/events.html
The implementation is a little more complex, but it allows decimal places.
so it worked! Appreciate all your help.
My last question is, why Adobe custom events round values with decimal instead of sum them all up as displayed below? and is there anyway to fix it other than passing the integer number without the decimal and then create another metric to divide values by 100 as you explained above?
I'm not sure if this solution will work in my current situation.
Purchase is currently passed through different transaction locations via web and mobile and they all using same array to pass s.products values
products += "Mobile Orders;"+name+";"+qty+";"+price+";;";
products += "Web Orders;"+name+";"+qty+";"+price+";;";
One other solution I'm currently using is passing $ value to an eVar and then creating numeric 2 classification for related eVar and multiply it with instances based on a recent temp solution I got from the team here.
Please let me know if you have any other ideas or if you like to connect to discuss further