Capture Revenue Without Increasing Orders

mahmoud_Alshala

27-02-2018

Hi There

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?

Thanks

Mahmoud

Accepted Solutions (1)

Accepted Solutions (1)

Gigazelle

Employee

13-03-2018

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.

s.events="event1=500";

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).

Answers (10)

Answers (10)

Gigazelle

Employee

21-03-2018

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:

s.events="event1=399"

Then you would use the above calculated metric so it becomes $3.99.

AlexisCazes

MVP

28-02-2018

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:

  • One for "Placed order" (i.e event1)
  • One for "Placed units" (i.e event2)
  • One for "Place revenue" (i.e event3)

So it would look like this:

s.events="event1,event2"

//place order or 5 units

//Beware of ; placeholders for omitted values

s.products=";product1;;;event1=1|event2=5|event3=500"

and once they purchase then you can send

s.events="purchase"

//100 for each unit

s.products=";product1;5;500"

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

Another solution is transactionID : transactionID and Transaction ID

Same bit overkill and will require to upload data sources in 90 days that follow. Data sources takes time to process as well.

mahmoud_Alshala

23-04-2018

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

1472086_pastedImage_0.png

Appreciated again Gigazelle

Gigazelle

Employee

11-04-2018

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.

mahmoud_Alshala

10-04-2018

Hi Gigazelle

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?

1462697_pastedImage_0.png

mahmoud_Alshala

21-03-2018

mahmoud_Alshala

06-03-2018

Hi Alexis Cazes Adobe

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

mahmoud_Alshala

01-03-2018

Hi Alexis Cazes Adobe

appreciate your respond. I will try your proposed solution and most likely I will be back for more questions as I'm still learning my way on the technical side