Send user interaction to Google Analytics servers without javascript tag.
Aquila can by used with Microsoft .Net 4.5 (minimum). you can use Aquila with an AspNet website (WebForms or MVC) or WinFoms/Wpf
See : https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide
First, install Nuget then, install Aquila from the package manager console.
PM> Install-Package Aquila
With Microsoft Visual Studio :
- Page
- Event
- Transaction
var track = new Aquila.PageTrack();
track.TrackingId = "UA-XXXX-Y";
track.UserId = Guid.NewId().ToString();
track.NonInteraction = true;
track.Url = "http://www.sample.com";
track.Title = "page title";
await track.SendAsync();
var track = new Aquila.EventTrack();
track.TrackingId = "UA-XXXX-Y";
track.UserId = Guid.NewId().ToString();
track.NonInteraction = true;
track.Action = "action";
track.Category = "category";
track.Label = "label";
track.Value = 10;
await track.SendAsync();
var track = new Aquila.TransactionTrack();
track.TrackingId = "UA-XXXX-Y";
track.UserId = Guid.NewId().ToString();
track.TransactionId = "Tran01";
track.RevenueWithTax = 100.0m;
track.ShippingWithTax = 10.0m;
track.Tax = 20.0m;
track.ItemList.Add(new TransactionItem()
{
Code = "item1",
Category = "cat1",
Name = "item1Name",
PriceWithTax = 10.0m,
Quantity = 9
});
await track.SendAsync();
var track = new Aquila.EnhancedTransactionTrack();
track.TrackingId = "UA-XXXX-Y";
track.UserId = Guid.NewId().ToString();
track.TransactionId = "Tran01";
track.Revenue = 90.0m;
track.Shipping = 10.0m;
track.Tax = 20.0m;
track.ProductList.Add(new Product()
{
Code = "item1",
Category = "cat1",
Name = "item1Name",
PriceWithTax = 10.0m,
Brand = "brand1",
Quantity = 9
});
await track.SendAsync();
You can use configuration file to store settings
<configuration>
<configSections>
<section name="aquila" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
</configSections>
<aquila>
<add key="trackingId" value="UA-XXXX-Y" />
</aquila>
</configuration>
Or by code
Aquila.GlobalConfiguration.Configuration.Settings.TrackingId = "UA-XXXX-Y";
Parameters | Default Value | Description |
---|---|---|
AutoStart | false | Use module mode and send all pages to google analytics in AspNet classic website (WebForms) |
TrackingId | null | The tracking ID / web property ID. The format is UA-XXXX-Y. All collected data is associated by this ID. |
BanishedExtensions | .gif,.png,.bmp,.jpg,.js,.css | if you use automatic sending , this extensions does not sent |
CampaignParameterName | utm_campaign | name of parameter in url match the campaign |
By default Aquila use System.Diagnostic for logging, but you can use your own logger that way :
public class AquilaLogger : Aquila.ILogger
{
private YourLogger m_InnerLogger;
public AquilaLogger(YourLogger logger)
{
m_InnerLogger = logger;
}
#region ILogger Members
public void Info(string message)
{
m_InnerLogger.Log(message);
}
public void Info(string message, params object[] prms)
{
m_InnerLogger.Log(message);
}
public void Warn(string message)
{
m_InnerLogger.Log(message);
}
public void Warn(string message, params object[] prms)
{
m_InnerLogger.Log(message);
}
public void Debug(string message)
{
m_InnerLogger.Log(message);
}
public void Debug(string message, params object[] prms)
{
m_InnerLogger.Log(message);
}
public void Error(string message)
{
m_InnerLogger.Log(message);
}
public void Error(string message, params object[] prms)
{
m_InnerLogger.Log(message);
}
public void Error(Exception x)
{
m_InnerLogger.Log(message);
}
public void Fatal(string message)
{
m_InnerLogger.Log(message);
}
public void Fatal(string message, params object[] prms)
{
m_InnerLogger.Log(message);
}
public void Fatal(Exception x)
{
m_InnerLogger.Log(message);
}
public void Notification(string message)
{
m_InnerLogger.Log(message);
}
public void Notification(string message, params object[] prms)
{
m_InnerLogger.Log(message);
}
public System.IO.TextWriter Out
{
get { return null; }
}
public void Watch(string title, System.Threading.ThreadStart method)
{
method.Invoke();
}
#endregion
}
var aquilaLogger = new AquilaLogger(yourLogger);
Aquila.GlobalConfiguration.Configuration.Logger = aquilaLogger;