reporting success events in omniture - adobe-analytics

Trying to track how many visistors who don't log in see the popup box that prompts them to create an account, and then each subsequent page of that popup box (java lightbox).
I have these tags in the box coding (the vendor implemented it):
s.prop4=Login Success
event19 = Already Registered
s.eVar20=Non-registered
Conversion flow ->
event20 = Welcome
event22 = Stop
event23 = Login
event24 = Plan Options
event25 = Create Account
event26 = Confirm Print Address
event27 = Enter Payment
event28,purchase=Transaction Complete
and then in Omniture I have put everything in its respective place, but I feel like i am missing something. I get a custom conversion report that shows how many got the login success vs the non-registered but none of the events past that.
What am I missing?

Related

How to use Branch.io to create a referral program for iOS app?

I have not been able to find a complete guide to creating a useful referral program in the Branch.io documentation. At the moment, I have the iOS SDK integrated as well as the dashboard setup correctly. I am using BranchUniversalObject and BranchLinkProperties and then showing the share sheet when a user attempts to share their referral yet when I click on the shared link, there is no reference to the user who referred the new user. I am setting a custom parameter referringUserID but that doesn't seem to get passed into the deep link when the user launches the app after download. I am also setting the canonicalIdentifier for the BranchUniversalObject. Is it better to generate a unique URL upon user account creation then use that from the share sheet and compare the +non_branch_link upon user launch? The code below is what I have for the current implementation of how we display the share sheet. What is the proper way to share links on iOS to track actual referrals?
let branchUniversalObject = BranchUniversalObject(canonicalIdentifier: Session.shared.userId!)
branchUniversalObject.title = "My Share Link"
branchUniversalObject.contentDescription = "Share"
// Feature (utm_medium) = marketing, referrals
// Channel (utm_source) = sticker, referral link, etc
// Campaign (itm_campaign) = launch, holiday season, etc.
// Tags = June Offer, Summer, Launch Promo
let branchLinkProperties = BranchLinkProperties()
branchLinkProperties.campaign = "Referral"
//branchLinkProperties.channel = "Referral Link"
branchLinkProperties.feature = "referrals"
branchLinkProperties.addControlParam("referringUserID", withValue: Session.shared.userId!)
branchUniversalObject.showShareSheet(
with: branchLinkProperties,
andShareText: "",
from: viewController,
completion: nil)

Why does apostrophe keep making POST calls to check if user logged in?

There are a bunch of POST calls from the website to the server and I don't know how to turn them off.
2019-10-24T21:24:49.606Z - info: admin already logged in. Passing through...
2019-10-24T21:25:09.767Z - info: /modules/apostrophe-notifications/poll-notifications
2019-10-24T21:25:09.768Z - info: admin already logged in. Passing through...
2019-10-24T21:25:29.911Z - info: /modules/apostrophe-notifications/poll-notifications
2019-10-24T21:25:29.912Z - info: admin already logged in. Passing through...
2019-10-24T21:25:50.023Z - info: /modules/apostrophe-notifications/poll-notifications
2019-10-24T21:25:50.024Z - info: admin already logged in. Passing through...
That just keeps going on and on...
In my app.js file, I've set the longPollingTimeout options to 0, but it doesn't stop it, and when I set it to 20000 ms it sends it every 20 seconds.
var apos = Mongo.getMongoPw().then(function(mongoPw){
return require('apostrophe')({
...
modules: {
...
'apostrophe-notifications': {
longPollingTimeout: 20000
},
...
}
});
It seems very pointless and spammy in my logs which we send to splunk.
How can I turn this off if it's unnecessary?
The API you're referring to is polling for notifications, which can be sent at any time by server-side or browser-side code. For instance, if you try this in the browser console:
apos.notify('Oh no!', { type: 'error' });
You'll get a notification, which persists until dismissed (it's stored server-side).
Where this gets more useful is when they are sent on the server side. For instance, your server-side javascript may also say:
if (req.user) {
// server side you must include req
apos.notify(req, 'Oh no!', { type: 'error' });
}
Now a notification will reach the currently logged-in user, sooner or later, and you don't have to think about how to deliver it; it just gets taken care of for you by poll-notifications. This is very useful in long running tasks. Without this feature enabled Apostrophe would be unable to deliver many necessary messages to the user.
However, you're wondering why you get this annoying message in your logs:
admin already logged in. Passing through...
I have checked both the apostrophe core module and the apostrophe workflow module. Neither contains any such message. I have also used github search to check the entire apostrophecms organization for this message, which does not appear. Same for a github-wide search. I left out the word "admin" and, in the apostrophecms org, also tried a search for "passing through" alone without turning up any code.
So what this indicates is that your custom code, or another npm module you have added to your project, contains custom middleware that is logging this message on every request that comes in. I would recommend quieting that middleware down as it's not necessary to report this on every notification poll.

Slack deep link into client: how to link into im if im not open

I made a platform-independent contactlist-style standalone client for Slack in Qt/C++.
It uses Slack's Deep Linking scheme to navigate through the official Slack-Client when clicking Items in my ContactList.
The problem is, when clicking a user item in my list (which gets the user id and creates the link), the slack client will only enter the im dialog, if it was open before (if i have a im history with that user).
Otherwise it will just show the team directory context for that user, where i manually have to click "message" to actually enter the chat dialog.
Is there really no way to do it right just with slack:// deep links?
The only solution that i can think of right now is to open a new im, if not exist, using api call from my application before opening the link. or maybe open im's for all users at app launch.
But that's kind of a dirty workaround, that i don't like.
Is there a more elegant way to go directly to a new IM than this?
EDIT: quick Workaround without error handling is working this way:
void Window::contactListDoubleClicked(QTableWidgetItem *item)
{
QString id = listWidget->item(item->row(),1)->text();
int type = listWidget->item(item->row(),3)->text().toInt();
if (type == 1) { // if item is a user, we have to ensure that im exists by requesting im.open
QEventLoop eventLoop;
QNetworkAccessManager mgr;
QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
QNetworkRequest req(QUrl(QString("https://slack.com/api/im.open?token=").append(m_token).append("&user=").append(id)));
QNetworkReply *reply = mgr.get(req);
// block stack until reply is ready
eventLoop.exec();
qDebug() << reply->readAll();
QDesktopServices::openUrl(QUrl(QString("slack://user?team=XXXXXXXX&id=").append(id),QUrl::TolerantMode));
} else {
QDesktopServices::openUrl(QUrl(QString("slack://channel?team=XXXXXXX&id=").append(id),QUrl::TolerantMode));
}
}

FBSDKGameRequestDialog with FBSDKGameRequestFilterAppNonUsers error

I need to implement game invitations (ie. inviting friends who are not users of the app to try the app) on an iOS app (which already has a working Facebook login system). There seems to be several possible ways of doing this, each with their own different requirements. FBSDKGameRequestDialog seems like a promising way of doing this. The tutorial at https://developers.facebook.com/docs/games/services/gamerequests says:
"Alternatively, by specifying app_non_users, the sender will only see friends who have previously not authenticated the app. This should be used when using requests for inviting new users to the game."
This seems to be exactly what I'm looking for. I therefore tried this:
FBSDKGameRequestContent* content = [[FBSDKGameRequestContent new] autorelease];
content.actionType = FBSDKGameRequestActionTypeSend;
content.filters = FBSDKGameRequestFilterAppNonUsers;
content.message = #"something";
content.title = #"something";
content.objectID = #"1"; // No idea what to put here
FBSDKGameRequestDialog* dialog = [[FBSDKGameRequestDialog new] autorelease];
dialog.content = content;
dialog.delegate = self;
NSError* error = nil;
if(![dialog validateWithError: &error])
NSLog(#"%#", error);
else
[dialog show];
The dialog launches, but calls the delegate with an error, namely:
Error Domain=com.facebook.sdk.share Code=100 "(null)" UserInfo={com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Invalid fbid.}
That error message is not very helpful, nor can I find anywhere why it's happening, or what the exact requirements are for this to be possible. (Yes, I am logged successfully into Facebook. Everything else is working just fine. I have no idea where that "Invalid fbid" is coming from.)
The same tutorial page offers an alternative to do this, by requesting a list of invitable friends explicitly, and using your own GUI. However, it says:
"This feature is only available to games with a presence on Facebook Desktop"
Obviously it doesn't bother telling what that means, or give a link to further information. And of course making the request doesn't work. (The error says "please set a Canvas URL in your app's settings", which I have no idea what it means or how to do it, even after browsing Facebook's own documentation and googling.)
Either way, I would prefer the SDK's own dialog for this, as it's much less work.
objectId refers to the "Open Graph object ID of the object being sent.". Lets say I am sending you 100 Coins of your in-app currency, then this would be the ID of the object you created for that "gift".
You don't have to provide a value for it if you are not planning to send around in-game items, and in your example, 1 is obviously not a valid ID for an object. The message could be more descriptive though.

TweetSharp works but requires app authentication every time user logs in

I have the authentication process working great with TweetSharp to log my users into my app. I then fetch and save the oauth_token and oauth_token_verifier on my system.
I have tried to use that same token/verifier combo to log the user back in which does prevent the necessity to have the user authorize the app again...however, I've noticed when I log in to twitter on the web, that token/verifier combination no longer is valid and so trying to log them in again doesn't work.
I dont' mind requesting a new token/verifier combo every time, but I dont' want to force my users to have to authorize the app every time. Is there a way around this?
here is the relevant code from my twitterloginhelper class:
LocalUser lsuser = new LocalUser();
TwitterService service = new TwitterService(consumer_key, consumer_secret);
OAuthAccessToken accessToken = service.GetAccessToken(requestToken, oauth_verifier);
service.AuthenticateWith(accessToken.Token, accessToken.TokenSecret);
TwitterUser user = service.VerifyCredentials(new VerifyCredentialsOptions());
lsuser.oauth_token = oauth_token;
lsuser.oauth_token_secret = oauth_verifier;
lsuser.profile_pic = user.ProfileImageUrl;
lsuser.login_type = "Twitter";
lsuser.username = user.Name;
lsuser.oauth_uid = user.Id.ToString();
lsuser.email = "";
return lsuser;
}
got this figured out.
once you have the requestToken, instead of calling TwitterService.GetAuthorizationUrl, call TwitterService.GetAuthenticationUrl.
that will make it authorize the app only once, and each subsequent time, allow the user to just log in w/o re-authorizing.

Resources