<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><language>en</language><title>Blog posts by David Ortiz</title> <link>https://world.optimizely.com/blogs/david-ortiz/</link><description></description><ttl>60</ttl><generator>Optimizely World</generator><item> <title>How to Elevate Your Experimentation - Opticon workshop experience</title>            <link>https://world.optimizely.com/blogs/david-ortiz/dates/2024/12/opticon-workshop-experience-how-to-elevate-your-experimentation/</link>            <description>&lt;p&gt;As a non-expert in the field of experimentation, I&amp;rsquo;d like to share my feedback on the recent Opticon San Antonio workshop session titled &lt;em&gt;&quot;How to Elevate Your Experimentation Program.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I found the Optimizely session particularly valuable due to its focus on practical tools and actionable recommendations, which were presented as a framework to implement experimentation programs even without extensive experience in the field.&lt;/p&gt;
&lt;h2&gt;The experimentation exercise&lt;/h2&gt;
&lt;p&gt;The session featured a hands-on exercise where attendees were divided into groups of 4-6 people to work on a hypothetical company case study. The objective was to select and present experimentation program recommendations using an experimentation framework and a maturity worksheet containing common problem statements, underlying causes, and suggested actions.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/c89c1201aab049bbbfcb0675945d1d00.aspx&quot; alt=&quot;Exercise overview&quot; width=&quot;501&quot; height=&quot;208&quot; /&gt;&lt;/p&gt;
&lt;p&gt;During the exercise, each group analyzed the current experimentation program, business priorities, team collaboration dynamics, active channels, challenges, and goals. We then aligned this information with the maturity pillars and problems outlined in the recommendations table.&lt;/p&gt;
&lt;p&gt;Initially, the exercise felt overwhelming because the company overview information was presented in a raw and somewhat disorganized manner, making it difficult to identify the company&amp;rsquo;s needs. However, after a few iterative cycles of reviewing the case study and consulting the experimentation recommendations worksheet, we began to recognize problem statements that matched the company&amp;rsquo;s issues and goals. Ultimately, we were able to select and present several well-founded experimentation recommendations. These were grounded in the advanced framework and supported by data rather than relying solely on &amp;ldquo;common sense,&amp;rdquo; &amp;ldquo;innovation,&amp;rdquo; or &amp;ldquo;prior experience.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;This initial sense of being overwhelmed mirrored the challenges faced when analyzing real-world data, which is often messy and unclear. Without a structured maturity worksheet and a foundation of experimentation problems and recommendations, it&amp;rsquo;s easy to feel lost or confused by irrelevant or misleading information.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I consider this exercise and the Optimizely experimentation framework immensely valuable for companies with limited experience in experimentation or those aiming to enhance their experimentation programs. It minimizes the risk of failure and avoids wasting time and money on solutions that don&amp;rsquo;t address their needs. Moreover, it serves as an excellent starting point for identifying hidden issues or opportunities within their systems.&lt;/p&gt;
&lt;p&gt;Thanks Vimi Kaul and Sama Asali from Optimizely for this great and useful experience.&lt;/p&gt;
&lt;h3&gt;Resources:&lt;/h3&gt;
&lt;h4&gt;Case study&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/link/9dace873f7f646f89fdf0645de54ffbb.aspx&quot; alt=&quot;case study&quot; width=&quot;1173&quot; height=&quot;816&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Matury Worksheet&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/467c9f8c84b141e19b38ab66d3ad6de1.aspx&quot; alt=&quot;worksheet 1&quot; width=&quot;898&quot; height=&quot;897&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/7dd0f72b96f24287b3bef5a5dc8d4918.aspx&quot; alt=&quot;maturity worksheet 2&quot; width=&quot;895&quot; height=&quot;925&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/david-ortiz/dates/2024/12/opticon-workshop-experience-how-to-elevate-your-experimentation/</guid>            <pubDate>Wed, 11 Dec 2024 20:04:02 GMT</pubDate>           <category>Blog post</category></item><item> <title>Multiple Anonymous Carts created from external Head front fetching custom Api</title>            <link>https://world.optimizely.com/blogs/david-ortiz/dates/2024/10/multiple-anonymous-carts-created-from-external-head-front-fetching-custom-api/</link>            <description>&lt;h2&gt;Scenario and Problem&lt;/h2&gt;
&lt;p&gt;Working in a custom headless architecture where a NextJs application hosted in Vercel consumes a custom API built in a Optimizely solution which works as a proxy between Optimizely Commerce Checkout actions (Get Cart, Add to Cart, etc) we faced and issue with &lt;strong&gt;guest users and duplicated carts.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The issue was that whenever an anonymous user call to api POST AddToCart , a new cart was created with a different anonymousId. But this was not happening from Postman, where same api method &quot;Add to Cart&quot; was always adding products to the same cart.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So, from postman we had always the same anonymous cart but from external FE app, a new cart was created in each fetch to the same Api AddToCart.&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;The cause of the issue was that from the FETCH that called the API, we were not including the cookies as part of the http request. So, Optimizely was thinking that each request came from a different client, reponding with a different AnonymousId value.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/11b982ae1af9429ebdf750a09ba89a52.aspx&quot; width=&quot;521&quot; height=&quot;70&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We realized about it inspecting postman &quot;Cookies&quot; tab that are part of each HTTP request and thinking that maybe our Frontend FETCH code was not including cookies.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/7413b75f53a24d7bb4d5820e52abe7cf.aspx&quot; width=&quot;382&quot; height=&quot;372&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, we found this post specifying that native FETCH API doesn&#39;t include cookies by default.&lt;/p&gt;
&lt;p&gt;Adding the configuration to include it, everything started to work correctly, sending the same AnonymousId in each request. Anonymous carts duplication error was fixed with that.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/34558264/fetch-api-with-cookie&quot;&gt;https://stackoverflow.com/questions/34558264/fetch-api-with-cookie&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/3ead89d851874cb4b77474c15dd62074.aspx&quot; width=&quot;340&quot; height=&quot;135&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In our case, we used the second resolution:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/030259ceed26409eb8f2f4b829e3a236.aspx&quot; width=&quot;470&quot; height=&quot;183&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hope it can be useful for someone else!&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/david-ortiz/dates/2024/10/multiple-anonymous-carts-created-from-external-head-front-fetching-custom-api/</guid>            <pubDate>Fri, 11 Oct 2024 20:36:28 GMT</pubDate>           <category>Blog post</category></item></channel>
</rss>