We are firing a custom mbox through adobe.getOffer through the page and this mbox fires post firing of global mbox call.
The custom mbox has the profile parameter and we are using this parameter to target the audience in an activity on the same page(page where the custom mbox is firing).
In the first visit since the profile paramter is not available (custom mbox call fires post the global ) so visitor is not qualifying for the audience and hence default experience loads in first visit however for all subsequent visits on this page, visitor is qualifying.
Is there any ways we can target visitors in the first visit itself?
Additionally you can look at "dataproviders" example from Adobe. It would mean you trigger your target global mbox after first calling your internal or external service for user profile parameters.
I have also done user experiences where you display loading spinners in the area where we are waiting for content to be delivered, this should be displayed until we hear back from Target with an experience using the out of the box hooks that are available. If it is succesfull in injecting the offer then remove spinner for the css selector, if it fails, then show the default offer.
Hope this helps!
Maybe I'm missing something, why cant you set your activity to use the custom mBox which has the param value?
The best solution would be to pass the profile data in the initial global mbox request. However, I'm guessing you have some constraints that prevent you from doing that in this case. If that's true you could possibly recall the global mbox in your getOffer (instead of the custom mbox name) with the profile. I'd suggest you only conditionally call the global mbox a second time when you know its a new visitor. There is probably a better option but that's one you could try.